Определить произведение нечетных элементов, расположенных после последнего отрицательного - C (СИ)
Формулировка задачи:
Помогите описать массив. Тему вроде понял. А как написать программу не очень для данной задачи. Дано натуральное число n и массив натуральных чисел a [1..n]. Определить произведение нечетных элементов, расположенных после последнего отрицательного элемента. Заранее спасибо.
Решение задачи: «Определить произведение нечетных элементов, расположенных после последнего отрицательного»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- int main( void )
- {
- unsigned n;
- size_t i, j, sum = 0;
- int lastNegative = -1;
- // ввод размера массива
- puts( "Choose size of your array: ");
- while( scanf( "%u", &n ) != 1 ) {
- puts( "Enter invalid value. Try again!" );
- scanf( "%*[^\n]" );
- }
- // декларация массива
- int a[n];
- srand( time( NULL ));
- for ( i = 0; i < n; ++i ) {
- // инициализация массива псевдослучайными числами
- a[i] = rand() % 90 - 15;
- // поиск последнего отрицательного числа в массиве
- if ( a[i] < 0 )
- lastNegative = i;
- }
- // отрицательных чисел не найдено программа завершается
- if ( lastNegative < 0 ) {
- puts( "Not found negative digits" );
- return EXIT_FAILURE;
- }
- else {
- if ( lastNegative % 2 != 0 )
- i = lastNegative;
- else
- i = ( lastNegative + 1 );
- // подсчет суммы
- while ( i < n ) {
- sum += a[i] * a[i + 2];
- i += 2;
- }
- }
- // вывод массива и суммы
- for ( i = 0; i < n; ++i )
- printf( "%4d", a[i] );
- printf( "\n%s%zu\n", "Sum is: ", sum );
- return EXIT_SUCCESS;
- }
Объяснение кода листинга программы
- Ввод размера массива с помощью функции scanf.
- Инициализация массива случайными числами с помощью функции rand() и операторов % и -15.
- Поиск последнего отрицательного числа в массиве с помощью переменной lastNegative.
- Проверка на отсутствие отрицательных чисел в массиве и завершение программы при необходимости.
- Проверка четности/нечетности индекса последнего отрицательного числа и инициализация переменной i.
- Подсчет произведения нечетных элементов, расположенных после последнего отрицательного числа, с помощью цикла while и оператора i += 2.
- Вывод массива и суммы с помощью цикла for и функций printf.
- Возврат значения EXIT_SUCCESS при успешном завершении программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д