Задания для самостоятельного выполнения

Переписать код своего варианта лабораторной работы 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);