не считает сумму

void f1(int **arr, int n, int m, int sum, int k ){
    for (int j = 0; j < m; j++)
    {
        sum = 0;
        k = 0;
        for (int i = 0; i < n; i++)
        {
            sum += arr[i][j];
        }
        if (sum > 0)
        {
            k++;
        }
    }

}

Ответы (1 шт):

Автор решения: versetty777

У вас сумма и k не используются за пределами цикла, поэтому результаты суммирования и инкрементирования не сохраняются и не возвращаются из функции. Чтобы исправить это, лучше объявить сумму и k как переменные функции, а не как локальные переменные цикла:

int* f1(int **arr, int n, int m ){
    int sum = 0;
    int k = 0;
    for (int j = 0; j < m; j++)
    {
        for (int i = 0; i < n; i++)
        {
            sum += arr[i][j];
        }
        if (sum > 0)
        {
            k++;
        }
    }
    int res[2] = {sum,k};
    return res;
}

Но в этом случае необходимо будет объявить res как глобальную переменную или выделить ей память на стеке.

→ Ссылка