Как вводить двухмерный массив? - C (СИ)
Формулировка задачи:
Собственно: как его вводить? Предположил что так (но ничего не вышло, разумеется):
#include <stdio.h>
#include <stdlib.h>
int main ()
{
const int ni, nj;
int i, j;
printf("Vvedite kolichestvo strok\n");
scanf("%d",&ni);
printf("Vvedite kolichestvo stolbzov\n");
scanf("%d",&nj);
int A[ni][nj];
for (i=0; i<ni; i++){
printf("Vvedite elementi stroki %d\n", i+1);
for (j=0; j<nj; j++){
scanf("%f",&A[i][j];}
}
}Решение задачи: «Как вводить двухмерный массив?»
textual
Листинг программы
#include <stdio.h>
#include <clocale>
#include <conio.h>
#include <stdlib.h>
void main()
{
setlocale(LC_ALL, "Rus");
int **mas, i, j, n, m;
float s=0;
printf("Введите n: ");
scanf("%d",&n);
printf("Введите m: ");
scanf("%d",&m);
mas=(int**)calloc(n,sizeof(int*));
for(i=0;i<n;i++)
mas[i]=(int*)calloc(m,sizeof(int));
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
printf("Введите элемент a[%d][%d] = ",i+1,j+1);
scanf("%d",&mas[i][j]);
}
for(i=0;i<n;i++)
{
printf("\n");
for(j=0;j<m;j++)
printf("%5d",mas[i][j]);
}
getch();
}
Объяснение кода листинга программы
Вывод списка элементов:
- Объявлены необходимые переменные для работы с массивом:
int **mas- указатель на указатель на целочисленный массив (двумерный массив);i,j,n,m- целочисленные переменные для цикла;s- переменная для хранения суммы элементов массива (будет использоваться в других задачах);printf(Введите n:);,scanf(%d,&n);иprintf(Введите m:);,scanf(%d,&m);- используются для ввода размеров массива.
- Выделена память под двумерный массив с помощью
calloc(n,sizeof(int*));иcalloc(m,sizeof(int));. - Происходит ввод элементов массива с помощью
scanf(%d,&mas[i][j]);. - Происходит вывод элементов массива с помощью
printf(%5d,mas[i][j]);. - В конце программы вызывается функция
getch(), которая ожидает нажатия клавиши для завершения работы программы.