Найти сумму произведений элементов массива - 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; }
Объяснение кода листинга программы
В этом коде есть две функции:
- findNeg: эта функция принимает в качестве аргументов массив и его размер, ищет в массиве отрицательные числа и возвращает их индекс. Если в массиве нет отрицательных чисел, функция возвращает -1.
- func: эта функция принимает в качестве аргументов массив и его размер. Инициализирует переменные res и mul. Переменная res инициализируется как 0, а переменная mul инициализируется как 1. Затем функция проходит по всем элементам массива, умножая каждый элемент на mul и добавляя результат к res. В конце функция возвращает значение res. В функции main создается массив arr размером 5, заполненный различными числами. Функция findNeg вызывается для поиска индекса первого отрицательного числа в массиве. Если отрицательные числа в массиве отсутствуют, то выводится сообщение об этом. Затем вызывается функция func с аргументами массив и его размер. Если найденный индекс отрицательного числа меньше нуля, то размер массива передается в функцию func вместо найденного индекса. В противном случае передается найденный индекс. Результат работы функции func выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д