Использование и обработка двумерного массива

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

Общий вид описания двумерного массива:

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;