Вывод двухмерного динамического массива - 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, завершая работу программы.