Помогите переделать программу для ввода с клавиатуры, а не использования рандома

Не совсем понимаю, как именно работает данный код. Можно ли программу переделать, например, чтобы вместо рандомизации матрицы использовался ввод с клавиатуры? И как именно?

#include <stdlib.h>
#include <time.h>

int main(void)
{
    srand(time(NULL));
    int** arr;
    int cols, rows;
    int i, j;
    int sum = 0;
    size_t posMax = 0;

    scanf_s("%d%d", &rows, &cols);
    arr = (int**)malloc(rows * sizeof(int*));
    for (i = 0; i < rows; ++i)
    {
        *(arr + i) = (int*)malloc(cols * sizeof(int));
        for (j = 0; j < cols; ++j)
        {
            *(*(arr + i) + j) = rand() % 21;
            printf("%d\t", *(*(arr + i) + j));
            if (*(*(arr + i) + j) > *(*(arr + i) + posMax))
                posMax = j;
        }
        sum += *(*(arr + i) + posMax);
        posMax = 0;
        printf("\n");
        free(*(arr + i));
    }
    printf("сумма максимальных элементов = %d\n", sum);
    free(arr);
    return 0;
}

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

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

У вас присвоение выполняется в этой строчке:

*(*(arr + i) + j) = rand() % 21;

Замените ее на scanf("%d",&arr[i][j])

Можно и через *(arr + i) + j, но я написал, чтоб вам было понятнее.

Разбирать, как работает весь код? Построчно заполняет матрицу, при заполнении ищет максимальный элемент в строке, суммирует эти максимальные элементы, выводит сумму.

Так устраивает?

→ Ссылка