Помогите поправить код
Ребята привет мне надо било зделать програму которая будет искать самое большое число из введенних пользователем и реалезовать перемножение всех чисел которие будут находиться между двумя нулевими из списка введенних я зделал ето все только вместо перемножения у меня числа сумируються помогите пожалуйста исправить. Вот код:
#include <iostream>
#include <math.h>
using namespace std;
int max_arr(int*, int);
int sum_f(int *, int );
int main()
{
int N;
cout << "N=";
cin >> N;
int* arr = new int[N];
for (size_t i = 0; i < N; i++)
{
cin >> arr[i];
}
cout << "max=" << max_arr(arr, N);
cout << "sum=" << sum_f(arr, N);
}
int max_arr(int* arr, int n)
{
int max = arr[0];
for (size_t i = 0; i < n; i++)
{
if (arr[i] > max)
max = arr[i];
}
return max;
}
int sum_f(int *arr, int N)
{
float sum=0;
int k = 0;
for (int i = 0; i < N; i++)
{
if (arr[i] == 0)
{
k += 1;
}
if (k == 1)
{
sum += arr[i];
}
}
return sum;
}
Ответы (1 шт):
Автор решения: Zhihar
→ Ссылка
int prod_f(int *arr, int N)
{
float prod=0;
// ищем первую позицию за нулём
int start = 0;
for (start = 0; i < N; i++)
if (arr[start] == 0)
break;
// вычисляем сумму до ближайшего нуля
if (start < N - 1)
{
float total = 1
for (int i = start + 1; i < N; i++)
if (arr[i] != 0)
total += arr[i];
else
{
prod = total;
break;
}
}
return prod;
}