Задания для самостоятельного выполнения
Переписать код своего варианта лабораторной работы No7 под использование динамической области памяти для хранения массивов.
Требования и ограничения
Для нечётных вариантов используйте I способ работы с массивами, для чётных - II способ.
Указания по выполнению работы
I способ размещения двухмерных массивов в памяти заключается в линеаризации или развёртке двухмерного массива в одномерный:
void fail()
{
printf("Memory allocation failure!\n");
exit(EXIT_FAILURE);
}
...
int *a = (int *)malloc(n * m * sizeof(int));
if (!a)
fail();
int i, j;
for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
a[i * m + j] = i * m + j + 1;
free(a);
II способ требует использования двухуровневых указателей:
int **a = (int **)malloc(n * sizeof(int *));
if (!a)
fail();
int i, j;
for (i = 0; i < n; i++)
{
a[i] = (int *)malloc(m * sizeof(int));
if (!a[i])
fail();
}
for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
a[i][j] = i * m + j + 1;
for (i = 0; i < n; i++)
free(a[i]);
free(a);