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