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

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

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

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

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

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. int findNeg(float arr[], int n) {
  4.     int i;
  5.     for (i = 0; i < n; ++i) {
  6.         if (arr[i] < 0) {
  7.             return i;
  8.         }
  9.     }
  10.     return -1;
  11. }
  12.  
  13. float func(float arr[], int n) {
  14.     int i;
  15.     float res = 0, mul = 1;
  16.     for (i = 0; i < n; ++i) {
  17.         mul *= arr[i];
  18.         res += mul;
  19.     }
  20.     return res;
  21. }
  22.  
  23. int main() {
  24.     float arr[] = { 1.0, 2.0, 3.0, -4.0, 5.0 };
  25.     int n = sizeof(arr) / sizeof(*arr);
  26.     int m = findNeg(arr, n);
  27.  
  28.     printf("%f\n", func(arr, (m < 0) ? n : m));
  29.  
  30.     return 0;
  31. }

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

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

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

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


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

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

8   голосов , оценка 4 из 5

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

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

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