Непрямоугольная матрица - C (СИ)
Формулировка задачи:
Из входного потока вводится непрямоугольная матрица целых чисел [Aij],i=1,...,m,j=1,...,Ni. Значения m и Ni заранее не известны и вводятся из входного потока. Сформировать такую матрицу.
Решение задачи: «Непрямоугольная матрица»
textual
Листинг программы
int main(int argc,char* argv[])
{
int i,j,n,m,**a;
srand((unsigned)time(0));
printf("n:");
scanf("%d",&n);
a=(int**)malloc(n*sizeof(int*));
for(i=0; i<n; i++)
{
printf("N%d:",i+1);
scanf("%d",&m);
a[i]=(int*)malloc((m+1)*sizeof(int));
*a[i]=m;
for(j=1; j<=m; j++) a[i][j]=rand()%19-9;
}
for(i=0; i<n; i++,printf("\n"))
{
m=*a[i];
for(j=1; j<=m; j++) printf("%3d",a[i][j]);
}
system("pause");
for(i=0; i<n; i++) free(a[i]);
free(a);
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Объявляются переменные: i, j, n, m, **a.
- Инициализируется генератор случайных чисел.
- Пользователю предлагается ввести количество строк матрицы (n).
- Массив a инициализируется как двумерный массив, где каждая строка - это динамический массив m.
- В каждой строке матрицы пользователю предлагается ввести количество столбцов (m).
- Каждая ячейка матрицы инициализируется случайным числом от -9 до 9.
- Все строки выводятся на экран.
- Программа ожидает нажатия клавиши для продолжения.
- Все динамические массивы освобождаются с помощью функции free.
- Конец программы. Этот код создает матрицу случайных чисел и выводит ее на экран.