
29 Двумерные массивы
Результат деятельности некоторой фирмы, торгующей автомобилями, может быть представлен в виде следующей таблицы.
Марка |
Январь |
Февраль |
Март |
... |
Ноябрь |
Декабрь |
ВАЗ 2106 |
|
|
|
|
|
|
ВАЗ 2107 |
|
|
|
|
|
|
ВАЗ 2108 |
|
|
|
|
|
|
ВАЗ 2109 |
|
|
|
|
|
|
ВАЗ 2110 |
|
|
|
|
|
|
ВАЗ 2111 |
|
|
|
|
|
|
Приведенная выше таблица может быть представлена как совокупность одномерных массивов:
var vaz2106 : array [1..12] of integer;
vaz2107 : array [1..12] of integer;
vaz2108 : array [1..12] of integer;
vaz2109 : array [1..12] of integer;
vaz2110 : array [1..12] of integer;
vaz2111 : array [1..12] of integer;
Возможно и такое представление таблицы:
var jan :array [6..11] of integer;
feb :array [6..11] of integer;
mar :array [6..11] of integer;
...
dec :array [6..11] of integer;
Если вся таблица содержит однородную информацию, например, только целые числа, то такая таблица может быть представлена как двумерный массив.
var vaz :array [6..11] of array [1..12] of integer;
Принято более компактное описание:
var vaz : array [6..11, 1..12] of integer;
Объявление двумерных массивов
Конструкция объявления двумерного массива:
array [ тип_индекса1, тип_индекса2 ] of базовый_тип;
Объявить массив возможно в разделах объявления констант, типов, переменных
const имя : array [тип_индекса1, тип_индекса2] of базовый_тип = ((список_элементов_1), …, (список_элементов_N));
type имя = array [ тип_индекса1, тип_индекса2] of базовый_тип;
var имя : array [ тип_индекса1, тип_индекса2] of базовый_тип;
где имя – это имя массива-константы, имя типа массива, имя переменной массива и соответственно (идентификатор);
array, of – зарезервированные слова, которые переводятся как «массив», «из»;
базовый_тип – тип элементов массива (кроме файлового типа);
тип_индекса1, тип_индекса2 – любой порядковый тип, размерность которого не превышает 2 Гб для OP Delphi 6 (для Turbo Pascal – 64 Кбайт).
Тип_индекса1 характеризует порядковые номера элементов матрицы в строках, тип_индекса2 – в столбцах.
В случае использования в роли типа индекса ограниченного типа (интервального типа) конструкция описания двумерного массива выглядит:
array [нижний_индекс1..верхний_индекс1,
нижний_индекс1..верхний_индекс2] of базовый_тип;
Количество элементов массива равняется величине:
Примеры объявления двумерных массивов:
const k=10; m=2; n=5;
{Объявление массива-константы из двух строк, трех столбцов
– шесть целочисленных элементов}
f : array [1..2, 1..3] of byte = ((0,1,2), (3,4,5));
{Объявление типа массива из пяти строк, пяти столбцов –
25 целочисленных элементов}
type matrix = array [1..n, 1..n] of integer;
{Объявление переменных массивов}
{массив из пяти строк, пяти столбцов – 25 целых элементов}
var a:matrix;
{ Массив из 10 строк, двух столбцов – 20 действительных элементов}
b : array [1 .. k, 1 .. m] of real;
{Массив из четырех строк, трех столбцов – 12 символьных элементов}
c : array [1..4, 1..3] of char;
{Массив из 256 строк, двух столбцов – 512 целых элементов}
d : array [byte, 1..2] of integer;