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

Представьте себе таблицу, состоящую из нескольких строк. Каждая строка состоит из нескольких ячеек. Тогда для точного определения положения ячейки нам потребуется знать не одно число (как в случае таблицы линейной), а два: номер строки и номер столбца. Структура данных в языке Паскаль для хранения такой таблицы называется двумерным массивом.

Описание двумерного массива:

Var

A : Array [1..20,1..30] Of Integer;

Описан двумерный массив, соответствующий таблице, состоящей из 20 строк и 30 столбцов.

Отдельный элемент двумерного массива адресуется, естественно, двумя индексами. Например, ячейка, находящаяся в 5-й строке и 6-м столбце будет называться A[5,6].

Ввод двумерного массива:

а) С клавиатуры

For i:=1 to 20 do

For j:=1 to 30 do

Read (a[I,j]);

б) Автоматическое формирование массива

For i:=1 to 20 do

For j:=1 to 30 do

a[I,j] := random (50)-25;

Вывод двумерного массива в виде матрицы:

For i:=1 to 20 do begin

For j:=1 to 30 do

Write(A[i,j] :5)

Writeln;

End;

Для иллюстрации способов работы с двумерными массивами решим задачу: «Задать и распечатать массив 10х10, состоящий из целых случайных чисел в интервале [1,100]. Найти сумму элементов, лежащих выше главной диагонали».

При отсчете, начиная с левого верхнего угла таблицы, главной будем считать диагональ из левого верхнего угла таблицы в правый нижний. При этом получается, что элементы, лежащие на главной диагонали будут иметь одинаковые индексы (i=j), а для элементов выше главной диагонали номер столбца будет всегда превышать номер строки (j>i).

Program M2;

Uses Crt;

Var

A : Array[1..10,1..10] Of Integer;

i, j : Byte;

S : Integer;

Begin

Clrscr;

Randomize;

{формирование матрицы}

For i:=1 to 10 do Begin

For j:=1 to 10 do Begin

A[i,j]:=Random(100)+1;

{вывод матрицы}

For i:=1 to 10 do Begin

For j:=1 to 10 do

Write(A[i,j]:5);

Writeln:

End;

{подсчет суммы элементов выше главной диагонали}

S:=0;

For i:=1 to 10 do

For j:=1 to 10 do

If j>i Then S:=S+A[i,j]

Writeln('Сумма элементов выше главной диагонали равна ',S)

End.

Если модель данных в какой-либо задаче не может свестись к линейной или плоской таблице, то могут использоваться массивы произвольной размерности. N-мерный массив характеризуется N индексами.