Двумерный
массив - это набор однотипных данных, имеющий общее имя, доступ к элементам
которого осуществляется по двум индексам: номер строки - i; номер столбца – j. Элементами массива может быть любой
из известных типов данных, следовательно и сам массив.
Например,
Const n=10;
m=20;
Type
aa2=array[1..n] of
Array[1..m]
Of real;
Var: aa2;
Более
распространено другое описание двумерных массивов. Например:
Type
bb2=array[1..n,1..m] of real;
Var b: bb2;
Вводить
двумерные массивы нужно поэлементно.
Считать
элементы массива и распечатать их в виде таблицы можно следующим образом:
For i:=1 to n
do
For j:=1 to m
do
Read(b[I,j]);
Readln;
For i:=1 to n
do
Begin
For j:=1 to m
do
Write(b[I,j]:6:1);
Writeln
End;
Элементы
многомерных массивов в памяти компьютера располагаются
«по
строкам». То есть сначала расположены все элементы первой строки, затем второй
и т.д.
Рассмотрим
как эффективно обрабатывать различные части матриц.
Проведем в
таблице «главную диагональ» - линию соединяющую левый верхний и правый нижний
угол матрицы. Пометим все элементы цифрами 0,1,2 в зависимости от расположения
элемента относительно главной диагонали:
0
|
1
|
1
|
1
|
1
|
2
|
0
|
1
|
1
|
1
|
2
|
2
|
0
|
1
|
1
|
2
|
2
|
2
|
0
|
1
|
2
|
2
|
2
|
2
|
0
|
Элементы,
стоящие на главной диагонали матрицы, обозначены цифрой 0.
У
произвольного элемента матрицы a[i,j] i – номер строки, а j – номер столбца.
·
Если
номер строки элемента совпадает с номером столбца( i=j ), то элемент лежит на главной
диагонали (на рисунке они обозначены цифрой 0). Для обработки всех элементов главной диагонали достаточно
одного цикла:
For i:=1 to n do
…a[i,i]…
·
Если
номер строки превышает номер столбца ( i>j ), то элемент находится ниже главной
диагонали (на рисунке они обозначены цифрой 2). Эти элементы описываются так:
For i:=2 to n do
For j:=1 to i-1 do
…a[i,j]…
·
Если
номер столбца больше номера строки ( i<j ), то элемент находится выше главной
диагонали (на рисунке они обозначены цифрой 1)
Для их обработки можно написать цикл:
For i:=1 to n-1 do
(это цикл по всем строкам)
For j:=i+1 to n do
(цикл по столбцам: от диагонали до n)
…a[i,j]…