Turbo Pascal (Borland Pascal) 7.0. Руководство пользователя

       

Двумерные массивы


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

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.



Содержание раздела