Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция13.doc
Скачиваний:
7
Добавлен:
15.11.2018
Размер:
114.69 Кб
Скачать

2.2.4. Многомерные массивы

Массивы бывают одномерные и многомерные. Одномерные массивы представляют собой ряд чисел или символов. Они уже были рассмотрены выше.

Примером многомерного массива является матрица. Это двухмерный массив. Многомерный массив имеет количество размерностей больше одного.

Примеры массивов:

Одномерный массив а1 , а2 , а3 , . . . , аn .

Двухмерный массив (матрица)

b11 , b12 , b13 , . . . , b1n

b21 , b22 , b23 , . . . , b2n

. . . . . . . . . . . . . . . . .

bm1 , bm2 , bm3 , . . . ,bmn

Синтаксис оператора описания многомерного массива следующий:

тип имя[размер1][размер2]. . . [размер n]

Отсюда следует, что оператор описания матрицы будет выглядеть как:

short a[4][5];

Из примера можно заключить, что это матрица целых чисел, значения чисел находятся в диапазоне –128 … +127, строк у матрицы 4, а столбцов 5. При описании матриц первой размерностью всегда указываются строки, второй – столбцы.

Для трехмерного массива оператор описания будет иметь вид:

float b[m][n][k];

Для четырехмерного

int c[m][n][k][l];

и так далее.

Идентификатор элемента многомерного массива аналогичен идентификатору одномерного b[2][3], c[1][3][5] с той лишь разницей, что указывается адрес элемента не в одной, а в нескольких размерностях.

Ввод многомерных массивов возможен такими же двумя способами, как и при вводе одномерных массивов.

Инициализация двухмерного массива (матрицы):

тип имя[n][m]={{эл.11,эл12,…,эл1n},

{эл.21,эл.22,…,эл.2n},

. . . . . . . . . . . . . . . . .

{эл.m1,эл.m2,…,эл.mn}};

Например:

int b[2][3]={{-2,4,0},{15,0,-7}};

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

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

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

Например:

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. Таким образом, многомерные массивы (запись справа) могут быть записаны как одномерные (запись слева). Иногда это бывает удобно.

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

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

По этому принципу могут описываться массивы любой размерности.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]