Сумму каждой строки матрицы записать в отдельный динамический массив (указатели) - C (СИ)
Формулировка задачи:
Я ввожу динамический двумерный массив через указатели. Потом мне нужно сумму каждой строки записать в отдельный динамический массив. У меня считает только последнюю строчку, как суммы записывать в разных адресах? Сумма у меня в *nw считается.
#include <stdio.h>
#include <malloc.h>
#include <locale.h>
int main()
{ setlocale (LC_ALL, "Russian");
int n, m, i, j, *mp, *nw, ;
scanf("%d%d", &n, &m);
mp = (int*)calloc(n*m,sizeof(int));
for(i = 0; i < n; i++){
nw = (int*)calloc(i,sizeof(int));
for(j = 0; j < m; j++){
scanf("%d", mp+i*m+j);
*nw = *(mp+i*m+j) + *nw;
}
}
for(i = 0; i < n; i++){
for(j = 0; j < m; j++)
printf("%d ", *(mp+i*m+j));
printf("%d \n", *nw);
}
}Решение задачи: «Сумму каждой строки матрицы записать в отдельный динамический массив (указатели)»
textual
Листинг программы
//...
nw = (int*) calloc(n, sizeof(int));
for (i = 0; i < n; i++) {
for (j = 0; j < m; j++) {
scanf("%d", mp + i * m + j);
*(nw+i) += *(mp + i * m + j);
}
}
for (i = 0; i < n; i++) {
for (j = 0; j < m; j++)
printf("%d ", *(mp + i * m + j));
printf("(sum = %d)\n", *(nw+i));
}
//...
Объяснение кода листинга программы
В этом коде используется язык программирования C. Код решает задачу суммирования каждой строки матрицы и сохранения результатов в отдельный динамический массив (указатели). Список действий в коде:
- Выделяется память под динамический массив
nwдля хранения суммы каждой строки матрицы с помощью функцииcalloc. - В цикле
forпроисходит чтение значений из матрицыmpи суммирование в соответствующих позициях массиваnw. - В цикле
forпроисходит вывод значений матрицыmpи соответствующих сумм из массиваnw. Переменные в коде: n- количество строк в матрице.m- количество столбцов в матрице.mp- адрес начала матрицы.nw- адрес начала динамического массива для хранения сумм строк.