Определить произведение нечетных элементов, расположенных после последнего отрицательного - 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;
}

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

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

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

15   голосов , оценка 3.667 из 5
Похожие ответы