Сумму каждой строки матрицы записать в отдельный динамический массив (указатели) - 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
- адрес начала динамического массива для хранения сумм строк.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д