Представление многомерных массивов как массив массивов.

Массивы могут представляться не только как совокупность однотипных простых данных, но и как совокупность других однотипных массивов.

Например:

int mas1 [l];

mas1 mas2[k]; int mas2[k][l];

mas2 mas3[n]; int mas3[n][k][l];

mas3 mas4[m]; int mas4[m][n][k][l];

В приведенном примере первый массив mas1 – одномерный, состоящий из l целых чисел типа int. Второй массив mas2 – одномерный, но состоящий из kэлементов типа mas1, то есть из k одномерных массивов. Третий массив также как и четвертый также одномерные, состоящие, в свою очередь, из массивов соответственно mas2 и mas3. Таким образом, многомерные массивы (запись справа) могут быть записаны как одномерные (запись слева).

 
 

 

 


Рис. 13.2. Блок–схема ввода четырехмерного массива

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

Для доступа к отдельному элементу массива mas4 необходимо использовать четыре вложенных цикла. Причем, самим внутренним циклом должен быть цикл, который указывает текущее значение самого правого индекса, а самим внешним циклом должен быть цикл, который указывает текущее значение самого левого индекса. Это иллюстрируется ниже фрагментом блок – схемы (Рис.12.2), где самый внутренний цикл обеспечивает изменение самого правого индекса d, а самый внешний цикл обеспечивает изменение самого правого индекса a. По этому принципу могут описываться массивы любой размерности.

Описание массивов с помощью инструкции typedef

Инструкция typedef позволяет упростить описание группы однотипных массивов. Синтаксис ее следующий:

typedef тип элемента имя массива;

 

 

Например:

float a[5][3], b[5][3], c[5][3];

Этот оператор описания группы массивов можно представить по–другому:

 

typedef float mas[5][3];

mas a, b, c;

Здесь в первом операторе создан новый тип массива mas, а во втором операторе он используется для описания массивов a, b, c. Этот прием удобен для описания большой группы однотипных массивов.