Определить произведение нечетных элементов, расположенных после последнего отрицательного - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогите описать массив. Тему вроде понял. А как написать программу не очень для данной задачи. Дано натуральное число n и массив натуральных чисел a [1..n]. Определить произведение нечетных элементов, расположенных после последнего отрицательного элемента. Заранее спасибо.

Решение задачи: «Определить произведение нечетных элементов, расположенных после последнего отрицательного»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. int main( void )
  6. {
  7.  
  8.     unsigned n;  
  9.     size_t i, j, sum = 0;
  10.     int lastNegative = -1;
  11.    
  12.     // ввод размера массива
  13.     puts( "Choose size of your array: ");
  14.     while( scanf( "%u", &n ) != 1 ) {
  15.         puts( "Enter invalid value. Try again!" );
  16.         scanf( "%*[^\n]" );
  17.     }
  18.    
  19.     // декларация массива
  20.     int a[n];    
  21.    
  22.     srand( time( NULL ));
  23.  
  24.     for ( i = 0; i < n; ++i ) {
  25.        
  26.         // инициализация массива псевдослучайными числами
  27.         a[i] = rand() % 90 - 15;
  28.  
  29.         // поиск последнего отрицательного числа в массиве
  30.         if ( a[i] < 0 )  
  31.             lastNegative = i;
  32.     }
  33.  
  34.     // отрицательных чисел не найдено программа завершается
  35.     if ( lastNegative < 0 ) {
  36.         puts( "Not found negative digits" );
  37.         return EXIT_FAILURE;
  38.     }
  39.  
  40.     else {
  41.        
  42.         if ( lastNegative % 2 != 0 )
  43.             i = lastNegative;
  44.         else
  45.             i = ( lastNegative + 1 );
  46.         // подсчет суммы
  47.         while ( i < n ) {
  48.             sum += a[i] * a[i + 2];
  49.             i += 2;
  50.         }
  51.     }
  52.  
  53.     // вывод массива и суммы
  54.     for ( i = 0; i < n; ++i )
  55.         printf( "%4d", a[i] );
  56.         printf( "\n%s%zu\n", "Sum is: ", sum );
  57.  
  58.     return EXIT_SUCCESS;
  59. }

Объяснение кода листинга программы

  1. Ввод размера массива с помощью функции scanf.
  2. Инициализация массива случайными числами с помощью функции rand() и операторов % и -15.
  3. Поиск последнего отрицательного числа в массиве с помощью переменной lastNegative.
  4. Проверка на отсутствие отрицательных чисел в массиве и завершение программы при необходимости.
  5. Проверка четности/нечетности индекса последнего отрицательного числа и инициализация переменной i.
  6. Подсчет произведения нечетных элементов, расположенных после последнего отрицательного числа, с помощью цикла while и оператора i += 2.
  7. Вывод массива и суммы с помощью цикла for и функций printf.
  8. Возврат значения EXIT_SUCCESS при успешном завершении программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы