Двумерные массивы (матрицы)
Двумерный массив - это структурированный тип данных в виде прямоугольной таблицы. Положение элементов в двумерных массивах описывается двумя индексами.
Например, двумерный массив размером 3*3, то есть в нем будет три строки, а в каждой строке по три элемента: Каждый элемент имеет свой номер, как у одномерных массивов, но сейчас номер уже состоит из двух чисел – номера строки, в которой находится элемент, и номера столбца. Таким образом, номер элемента определяется пересечением строки и столбца.
A[2,1] - это элемент, стоящий во второй строке и в первом столбце.
Описание двумерного массива (матрицы):
Var A: array[1..100,1..100] of integer;
Ввод двумерного массива
Для последовательного ввода элементов двумерного массива используется цикл for, в котором нужно последовательно изменять номер строки с 1-й до последней и в каждой строке перебирать элементы столбцов с 1-го до последнего.
Рассмотрим пример ввода двумерного массива Паскаля с клавиатуры:
var
a, : array [1..5, 1..10] of integer;
i, j: integer; { индексы массива }
begin
for i :=1 to 5 do {цикл для перебора всех строк}
for j :=1 to 10 do {перебор всех элементов строки по столбцам}
readln ( a [ i , j ]); {ввод с клавиатуры элемента, стоящего в i -й строке и j -м столбце}
Двумерный массив можно заполнить случайным образом, т.е. использовать функцию random (N), а также присвоить каждому элементу матрицы значение некоторого выражения. Способ заполнения двумерного массива выбирается в зависимости от поставленной задачи, но в любом случае должен быть определен каждый элемент в каждой строке и каждом столбце.
Вывод двумерного массива Паскаля на экран
Вывод элементов двумерного массива также осуществляется последовательно, необходимо напечатать элементы каждой строки и каждого столбца. При этом нужно, чтобы элементы, стоящие в одной строке, печатались рядом, т.е. в строку, а элементы столбца располагались один под другим. Для этого необходимо выполнить следующую последовательность действий (рассмотрим фрагмент программы для массива, описанного в предыдущем примере):
for i :=1 to 5 do {цикл для перебора всех строк}
begin
for j :=1 to 10 do {перебор всех элементов строки по столбцам}
write ( a [ i , j ]:4); {печать элементов, стоящих в i -й строке матрицы в одной экранной строке, при этом для вывода каждого элемента отводится 4 позиции}
writeln ; {прежде, чем сменить номер строки в матрице, нужно перевести курсор на начало новой экранной строки}
end ;