Двумерный массив – структура данных, хранящая прямоугольную матрицу. В матрице каждый элемент определяется номером строки и номером столбца, на пересечении которых он расположен. В Паскале двумерный массив представляется массивом, элементами которого являются одномерные массивы. Два следующих описания двумерных массивов тождественны:
Var a: array [1..10] of array [1.. 20] of real;
Var a: array [1..10, 1..20] of real;
Чаще всего при описании двумерного массива используют второй способ. Доступ к каждому отдельному элементу осуществляется обращением к имени массива с указанием индексов (первый индекс – номер строки, второй индекс – номер столбца). Все действия над элементами двумерного массива идентичны действиям над элементами линейного массива. Только для инициализации двумерного массива используется вложенный цикл for.
Например, For i:= 1 to 10 do
For j:= 1 to 20 do
A[i, j] := 0;
При организации вложенных (сложных) циклов необходимо учитывать:
· Все правила, присущие простому циклу, должны соблюдаться
· Имена параметров для циклов, вложенных один в другой, должны быть различными
· Внутренний цикл должен полностью входить в тело внешнего цикла. Пересечение циклов недопустимо
Пример 1. Сформировать таблицу Пифагора (таблица умножения) и вывести ее на экран.
Program Pifagor;
Uses crt;
Var p: array[1..9, 1..9] of integer; i, j:integer;
Begin
Clrscr;
for i:=1 to 9 do
for j:= 1 to 9 do
p[i,j]:= i*j;
for i:=1 to 9 do
begin
for j:=1 to 9 do
write(p[i,j], ‘ ‘);
writeln
end;
end.
Пример 2. Задан двумерный массив В(10, 10), заполненный случайными числами из
[-10,10]. Найти и вывести на экран те элементы массива, которые больше заданного числа k.
Program massiv;
Uses crt;
Var b: array[1..10, 1..10] of integer; i, j, k :integer;
Begin
Clrscr;
for i:=1 to 10 do
begin
for j:= 1 to 10 do
begin
b [i,j]:= random(20)-10;
write(b[i,j], ‘ ‘);
end;
writeln;
end;
write(‘Введите число k’);
readln (k);
For i:=1 to 10 do
For j:=1 to 10 do
If b[i, j] >k then write (b[i, j]);
End.