Двумерные массивы
Двумерный массив – структура данных, хранящая прямоугольную матрицу. В матрице каждый элемент определяется номером строки и номером столбца, на пересечении которых он расположен. В Паскале двумерный массив представляется массивом, элементами которого являются одномерные массивы. Два следующих описания двумерных массивов тождественны:
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.