Дополнительно мы можем получить и сумму всех элементов массива:
Поскольку типом массива может снова быть массив, то мы можем объявлять и массивы массивов, то есть многомерные массивы. Чаще других в программах встречаются дву- и трёхмерные массивы:
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; и посмотрим, как он располагается в памяти компьютера
Очень похоже на несколько одномерных массивов, уложенных стопкой, но на самом деле все элементы массива хранятся в памяти не в виде таблицы, а последовательно - как и одномерные массивы
Нам же удобнее представлять себе двумерные массивы именно первым способом.