Помогите поправить код

Ребята привет мне надо било зделать програму которая будет искать самое большое число из введенних пользователем и реалезовать перемножение всех чисел которие будут находиться между двумя нулевими из списка введенних я зделал ето все только вместо перемножения у меня числа сумируються помогите пожалуйста исправить. Вот код:

#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;
}
→ Ссылка