Теорія:

Під час розв’язування багатьох задач доводиться працювати з таблицями, у яких кілька рядків і кілька стовпців. Для опрацювання таких таблиць існує тип даних двовимірниймасив.   Ми постійно маємо справу із двовимірними масивами. Подивись на екран монітора — його матриця є двовимірним масивом пікселів. У залі кінотеатру розташований двовимірний масив стільців, де кожний стілець має 2 індекси — номер ряду і номер стільця в ряду. Згадай також шахівницю або знамениту комп’ютерну гру Lines. Для визначення положення елемента в прямокутній таблиці потрібно знати порядковий номер рядка і стовпця, на перетині яких знаходиться клітинка. Тому в двовимірному масиві — два індекси, номер рядка та номер стовпця. Прийоми та алгоритми роботи з одновимірними масивами стануть нам в нагоді при опрацюванні елементів рядків двовимірного масиву.
Опис змінних типу Двовимірний масив
Двовимірний масив — це прямокутна таблиця, у якій N рядків і М стовпців.
Елемент, розташований на перетині і-го рядка і j­го стовпця масиву А, позначають А[і, j].
Головну діагональ утворюють елементи двовимірного масиву, для яких i= j.
Описати змінну типу двовимірний масив можна двома способами:
1) type mas = array[1..N, 1..M] of <тип елементів>;
    var A: mas;

де N — кількість рядків, М — кількість стовпців.
2)  var A: array[1..N, 1..M] of <тип елементів>;
Таблицю
7
2
3
34
4
5
0
—3
1
3
8
1.2
можна описати таким чином:
type mas = array[1..3, 1..4] of Real;
var A: mas;

або
var A: array[1..3, 1..4] of Real;
Зверни увагу!
Послідовно отримати доступ до всіх елементів двовимірного масиву можна за допомогою вкладених циклів.
Приклад:
Щоб вивести у поле ListBox значення елементів масиву А , лічильник зовнішнього циклу потрібно змінювати в діапазоні 1..3, а внутрішнього — у діапазоні 1..4:
For i := 1 to 3 do
        For j := 1 to 4 do ListBox1.Items.Add(FloatToStr(A[i, j]);
Надання значень елементам масиву
Надати значення елементам двовимірного масиву можна різними способами.
Ввести елементи масиву A[1..N, 1..M] з клавіатури:
For i := 1 to N do
     For j := 1 to M do StrToInt(InputBox('Введення’, A[‘ + IntToStr(i) + IntToStr(j)+’]?’, ‘0’));
Задати значення за допомогою масиву­—константи:
type Tabl = аrray[1..3, 1..4] of Real;
const B: Tabl = ((7, 2, 3, 34), (4, 5, 0, –3), (1, 3, 8, 1.2));
var A: Tabl ;
begin <...>
   A:= B; 
Зверни увагу!
Якщо масиви А і В належать до одного типу, можна присвоїти масиву А значення масиву В. При цьому елементи масиву А набувають значень елементів масиву В з такими самими індексами (А[1,1]:=B[1,1] , А[1,2]:=B[1,2]  і т.д.).
Заповнити масив випадковими числами:
begin Randomize;
For i := 1 to N do
          For j := 1 to M do A[i,j] := Random(X);
Заповнити за певною формулою:
Заповнити масив M[1..N, 1..N] таким чином: елементи головної діагоналі дорівнюють одиниці, а всі інші — нулю.
For i := 1 to N do
    For j := 1 to N do
               If i = j Then M[i,j] := 1 else M[i,j] := 0;