Двумерный массив, или матрица, является более сложной структурой, чем вектор, так как представляет собой таблицу, состоящую из определенного количества строк и столбцов. При определении элементов матрицы необходимо указать два индекса: номер строки и номер столбца.
Общий вид описания двумерного массива:
array [тип идекса1, тип индекса 2] of тип компонентов;
Тип индекса, так же как и при описании одномерного массива, может быть скалярным или ограниченным, кроме действительного и неограниченного целого. Тип индекса 1 определяет число строк в матрице, а тип индекса 2 – число столбцов. Тип компонентов может быть любым простым или сложным.
Двумерный массив можно описать различными способами.
Пусть матрица а с действительными компонентами состоит из 10 строк и 12 столбцов.
Приведем примеры описания матрицы а.
1. type matr = array [1..10, 1..12] of real;
var a:matr;
2. type vect= rray [1 .. 12] of real;
matr=array [1 .. 10] of vect;
var a: matr;
3. var a:array[1 .. 10, 1 .. 12] of real;
Для обращения к отдельным элементам матрицы применяется переменная с индексами. Сначала записывается идентификатор матрицы, затем в квадратных скобках через запятую два индексных выражения, первое из которых обозначает позицию строки, второе – столбца.
Выражение должно определять значение того же типа, что и указанные в описании массива типы индексов, иначе компьютер выдаст сообщение об ошибке.
Элементы массива могут стоять как в левой части оператора присваивания, так и в выражениях. Над переменной с индексом можно производить любые операции, которые допустимы для данных его базового типа (типа компонентов массива). Если базовый тип есть real, то допустимы все операции над данными вещественного типа, включая и стандартные функции.
Ввод и вывод элементов двумерного массива выполняется с использованием цикла с параметром.
Ввод массива а(10, 10):
writeln (¢введи элементы вектора a(10,10)’);
for i:=1 to 10 do
for j:=1 to 10 do read (a[i, j]);
Вывод массива a(10,10):
writeln (¢вывод массива a(10, 10)¢);
for i:=l to 10 do
begin for j:= to 10 do
write(a[i, j]:7:1);
writeln
end;