Найти сумму произведений элементов массива - C (СИ)

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

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

Здравствуйте! Описать функцию, вычисляющую значение x0 + x0*x1 + x0*x1*x2 + …+ x0*x1*x2*...*xm, где xi - элементы вещественного массива x из n элементов, m - индекс первого отрицательного элемента этого массива либо число n-1, если такого элемента в массиве нет. Не могу понять, как осуществить сам алгоритм (не код). Думаю, тут нужно использовать рекурсию, но не пойму как это вообще осуществить. Подскажите пожалуйста!

Решение задачи: «Найти сумму произведений элементов массива»

textual
Листинг программы
#include <stdio.h>
 
int findNeg(float arr[], int n) {
    int i;
    for (i = 0; i < n; ++i) {
        if (arr[i] < 0) {
            return i;
        }
    }
    return -1;
}
 
float func(float arr[], int n) {
    int i;
    float res = 0, mul = 1;
    for (i = 0; i < n; ++i) {
        mul *= arr[i];
        res += mul;
    }
    return res;
}
 
int main() {
    float arr[] = { 1.0, 2.0, 3.0, -4.0, 5.0 };
    int n = sizeof(arr) / sizeof(*arr);
    int m = findNeg(arr, n);
 
    printf("%f\n", func(arr, (m < 0) ? n : m));
 
    return 0;
}

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

В этом коде есть две функции:

  1. findNeg: эта функция принимает в качестве аргументов массив и его размер, ищет в массиве отрицательные числа и возвращает их индекс. Если в массиве нет отрицательных чисел, функция возвращает -1.
  2. func: эта функция принимает в качестве аргументов массив и его размер. Инициализирует переменные res и mul. Переменная res инициализируется как 0, а переменная mul инициализируется как 1. Затем функция проходит по всем элементам массива, умножая каждый элемент на mul и добавляя результат к res. В конце функция возвращает значение res. В функции main создается массив arr размером 5, заполненный различными числами. Функция findNeg вызывается для поиска индекса первого отрицательного числа в массиве. Если отрицательные числа в массиве отсутствуют, то выводится сообщение об этом. Затем вызывается функция func с аргументами массив и его размер. Если найденный индекс отрицательного числа меньше нуля, то размер массива передается в функцию func вместо найденного индекса. В противном случае передается найденный индекс. Результат работы функции func выводится на экран.

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


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

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

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