logo
Подбельский Фомин_Программирование на языке СИ_

10.4. Многомерные динамические массивы с переменными размерами

Порядок выполнения задания (общая схема алгоритма):

1. Ввести размеры многомерных массивов.

2. Сформировать динамические массивы заданных размеров с помощью функций malloc( ) и/или calloc( ).

3. Заполнить массивы значениями, т.е. определить значения элементов массивов (удобнее сделать это не вручную, т.е. не вводя значения элементов с клавиатуры, а алгоритмически).

4. Выполнить действия над массивами, необходимые для решения конкретной поставленной задачи, сформировать новый массив-результат (или новые массивы).

5. Напечатать в наглядном виде массив-результат.

6. Удалить динамические массивы с помощью функции

free( ).

Входные данные:

• размеры массивов;

• данные, определяющие значения элементов массивов.

Выход: Представление на экране одного или нескольких массивов-результатов.

Схема обработки многомерного динамического массива (для матрицы).

1. Определяем указатель на массив указателей на объекты заданного типа (тип **uk).

2. Вводим размеры матрицы N, М.

3. Создаем динамический массив из N указателей на указатели:

uk = (тип **)malloc(N*sizeof(mun *));

или

uk = (тип **) calloc(N, sizeof(mun *));

4. В цикле создаем N массивов-строк (по М элементов в каждом)

for (...) uk[i] = (тип *)malloc(M*sizeof(mun);

или

for (...) uk[i] = (тип *) calloc(M, sizeof(mun));

5. Обработка массива (работа с индексированными элементами uk[i][j]...);

6. В цикле удаление N массивов-строк:

for(... i ...) free(uk[i]);

7. Удаление массива указателей:

free(uk);

Каждое задание данного подраздела логически делится на две части:

1) формирование многомерного массива требуемых размеров и определение значений его элементов;

2) решение задачи, для которой один или более массивов (заполненных при выполнении первой части задания) являются исходными данными.