Определить произведение нечетных элементов, расположенных после последнего отрицательного - 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 при успешном завершении программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д