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

Дополнительно мы можем получить и сумму всех элементов массива:

Поскольку типом массива может снова быть массив, то мы можем объяв­лять и массивы массивов, то есть многомерные массивы. Чаще других в программах встречаются дву- и трёхмерные массивы:


Var
a2: array[1..10,    1..8] of integer;
a3: array[1..10, 1..8, 1..2] ofinteger;

или


Var
a2: array[1..10] of array[1..8] of integer;
a3: array[1..10] of array[1..8] of array[1..2] of integer;

Обычно используется первая, более короткая запись.

Иногда удобнее объявить сначала тип нужного массива, а уже потом - пе­ременные этих типов:


type
t2= array[1..10,    1..8] of integer;
t3: array[1..10, 1..8, 1..2] of integer;
Var
a2: t2; a3: t3;

Двумерные массивы также называют матрицами. Например, массив a2 описывает матрицу (таблицу), состоящую из 10 строк и 8 столбцов.

К каждому элементу многомерного массива можно обратиться по его ин­дексам, которые указываются в квадратных скобках через запятую:

a2[3, 2] - элемент массива, который находится в третьей строке, во втором столбце. 

Как и в случае одномерных массивов, объявление многомерного массива можно сочетать с присвоением начальных значений его элементам. При этом значения для каждой размерности заключаются в круглые скобки:


var
a: array[1..4, 1..2] of integer = ((0,1),     (2,3),    (4,5),    (6,7));

Например, значение элемента a[3, 2] равно 5. Чтобы легче было предста­вить двумерный массив в виде таблицы, запишем объявление массива иначе:


array[1..4, 1..2] of integer = ((0,1),
(2,3),
(4,5),
(6,7));

С многомерными массивами мы сталкиваемся в школе, это

Таблица умножения:

Var tab: array[2..9, 2..9] of integer;

Значения элементов массива - произведение номера столбца на номер строки.

 Шахматная доска:

Var field: array['a'..'h', 1..8] of figura;
 

В каждой клетке может стоять чёрная или белая фигура (или пешка), или клетка может быть пустой.

 Школьный журнал.

Введём константы для максимальных значений:


const
число_предметов = 10;
число_учеников = 3 0;
число_занятий = 10 0;

Если в вашей школе другие порядки, то подставьте другие значе­ния!

Объявим новые типы:


type
оценка= 1..5;
школьный_журнал=    array[1..число_предметов, 
1..число_учеников, 1..число_занятий] of оценка;

и переменную, в которой будет храниться школьный журнал 5а класса:


var журнал5а класса: школьный журнал; 

Если первый предмет алгебра, Шурик - 13-ый ученик в списке клас­се и на третьем занятии он получил пятёрку, то можно записать её в школьный журнал:

журнал5а_класса[1,13,3]:= 5;

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

Объявим массив целых чисел:


Var
a2: array[1..5] of array[1..10] of integer; и посмотрим, как он располагается в памяти компьютера 

Delphi

Очень похоже на несколько одномерных массивов, уложенных стопкой, но на самом деле все элементы массива хранятся в памяти не в виде таблицы, а последовательно - как и одномерные массивы 

Delphi

Нам же удобнее представлять себе двумерные массивы именно первым способом.

������� ������ ��� dle ������� ��������� ������

Помоги проекту! Расскажи друзьям об этом сайте: