Вывод двухмерного динамического массива - C (СИ)
Формулировка задачи:
Добрый день, суть программы в том, что пользователь вводит массив n*n, а программа выводит его, увеличив каждый элемент в два раза.
Нужна простейшая программа, без всяких выкрутасов, чтобы я смог разобраться в теме. Заранее очень благодарю!
Я написал вот-так - но компилятор выдает ошибку на 24 строке.
#include <stdio.h> #include "stdlib.h" int main (int argc, const char * argv[]) { int *a; int i, j, z, i1, j1, z1, n; printf("n="); scanf("%i", &n); a = (int*)malloc(n*n*sizeof(float)); for (i=0; i<n; i++) { for (j=0; j<n; j++) { printf("\n Vvedite a[%d][%d]", i+1, j+1); scanf("%d", *(a+i)+j); } } for (i=0; i<n; i++) { for (j=0; j<n; j++) { *(*(a+i)+j) = *(*(a+i)+j) * 2; } } for (i=0; i<n; i++) { for (j=0; j<n; j++) { printf("%d", *(*(a+i)+j) ); printf("\n"); } } free(a); return 0; }
Решение задачи: «Вывод двухмерного динамического массива»
textual
Листинг программы
#include <stdio.h> #include "stdlib.h" int main (int argc, const char * argv[]) { int **a; int i, j, z, i1, j1, z1, n; printf("n = "); scanf("%d", &n); a = (int**)malloc(n*sizeof(int*)); for (i = 0; i < n; i ++) *(a+i) = (int*)malloc(n*sizeof(int)); for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { printf("\nVvedite a[%d][%d] = ", i+1, j+1); scanf("%d", *(a+i)+j); } } for (i = 0; i < n; i++) { for (j = 0; j < n; j ++) { *(*(a+i)+j) = *(*(a+i)+j) * 2; } } for (i = 0; i < n; i ++) { for (j = 0; j < n; j ++) { printf("%4d", *(*(a+i)+j) ); } printf("\n"); } for (i = 0; i < n; i ++) free(a[i]); free(a); return 0; }
Объяснение кода листинга программы
Код представляет собой программу на языке C, которая выполняет следующие действия:
- Объявляет двумерный динамический массив
a
типаint
и инициализирует его с помощьюmalloc()
. - Запрашивает у пользователя размер массива
n
с помощьюscanf()
. - Выделяет память под
n
строк массиваa
с помощью циклаfor
иmalloc()
. - Запрашивает у пользователя значения для каждой ячейки массива
a
с помощью циклаfor
иscanf()
. - Умножает каждое значение в массиве на 2 с помощью цикла
for
и*=
. - Выводит значения массива на экран с помощью цикла
for
иprintf()
. - Освобождает память, выделенную под массив
a
, с помощью циклаfor
иfree()
. - Возвращает 0, завершая работу программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д