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

Одномерный массив (вектор) имеет вид таблицы из одной строки, ячейки которой заполнены значениями. Рассматривая ДВУМЕРНЫЙ массив, можно провести аналогию с таблицей, имеющей несколько строк и столбцов. Если отдельный элемент одномерного массива обозначали именем массива с индексом (А[i]), то для обозначения элемента двумерного массива (матрицы) потребуются два индекса: один - для указания номера строки, другой - для указания номера столбца, на пересечении которых находится нужный элемент: А[i,j]. Двумерные массивы описываются сходно с массивами одномерными:

Const Str=4; Stolb=5;
 
Var A:Array[1..Str,1..Stolb] of Real;

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

FOR i:=1 TO Str DO
FOR j:=1 TO Stlb DO Readln(A[i,j]);
...............
FOR i:=1 TO Str DO
FOR j:=1 TO Stlb DO Writeln('A[',i,',',j,']=',A[i]:6:2);

здесь Str - число строк, Stlb - число столбцов.

 

Пример:

В программе необходимо описать двухмерный массив целых чисел:

4 0 7

2 1 5

Описание этого массива в соответствии с первым способом выглядит следующим образом:

Type mas = Array[1..2,1..3] Of Byte;

Var M : mas;

Для второго способа имеем:

Var M : Array[1..2,1..3] Of Byte;

Для обращения в программе к элементу во второй строке и третьем столбце используется запись M[2,3].

В качестве индексов массива могут использоваться выражения, частным случаем которых является константа или переменная, например:

Min := A[2*i]+1.3; {присвоить переменной Min значение элемента A c номером i*2, увеличенное на 1.3}

Sum := Sum - C[k]; {уменьшить значение в переменной Sum на значение из элемента C c номером k}

Rez := B[4] + 5.2; {присвоить переменной Rez значение элемента B c номером 4, увеличенное на 5.2}

 

Пример описания трехмерного массива:

Var A : Array[char,boolean,1..10 ] of Real;

В этом случае при использовании в программе элемента A [i,j,k] индексы i,j,k должны быть следующих типов: i - символьного, j - логического, k - интервального.

Для ввода и вывода числовых значений элементов массива используются циклы.

Например,

цикл For k := 1 To 13 Do Read(C[k]);организует ввод 13 значений элементов массива С,

а цикл For k := 1 To 13 Do Write(C[k],' '); –вывод этих элементов.

Начальные значения элементов массива могут быть введены сразу с описанием массива как типизированная константа в разделе Const. При этом могут применяться также две формы описания:

Type имя типа = Array[тип индекса] Of базовый тип элементов;

Const имя константы : имя типа = (список констант);

или

Const имя константы : Array[тип индекса] Of базовый тип элементов = (список констант);

При описании типизированной константы типа "многомерный массив" константы каждой строки заключаются в отдельные скобки. Например, описание двухмерного массива со следующими начальными значениями:

2 3 15 4

7 18 23 5

1 9 11 10

32 16 6 4

будет выглядеть следующим образом:

Const M : Array[1..4,1..4] Of Byte = (( 2, 3, 15, 4), ( 7, 18, 23, 5), ( 1, 9, 11, 10), (32, 16, 6, 4));

 

В языке Паскаль допускается использование массива в целом только в операторе присваивания вида:

M1 := M2;

где M1, M2 - два однотипных массива одинаковой размерности.