Помогите переделать программу для ввода с клавиатуры, а не использования рандома
Не совсем понимаю, как именно работает данный код. Можно ли программу переделать, например, чтобы вместо рандомизации матрицы использовался ввод с клавиатуры? И как именно?
#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, но я написал, чтоб вам было понятнее.
Разбирать, как работает весь код? Построчно заполняет матрицу, при заполнении ищет максимальный элемент в строке, суммирует эти максимальные элементы, выводит сумму.
Так устраивает?