- Определение
Двумерный массив – это ограниченный, упорядоченный набор однотипных элементов, положение каждого из которых однозначно определяется 2-мя индексами.
Двумерный массив – это структура данных хранящая прямоугольную матрицу.
если кол-во строк = кол-во столбцов, то матрица квадратная
Размер – это количество элементов в массиве.
Размерность – это количество индексов.
Если элементами линейного массива являются значения, представляющие собой линейный массив со скалярными элементами, то получится двумерный массив.
- Описание
? Как описывается одномерный массив
Можно описать следующим образом:
А) var a: array[1..10] of array[1..20] of real;
? как выглядит эта матрица
Для компактности записи используется следующий формат описания
Var <имя массива>: array[тип индекса, тип индекса] of <тип элементов>;
таким образом матрица из примера выше: var a: array[1..10, 1..20] of real;
На первом месте указывается номера строк, на втором номера столбцов
Индексы не обязательно одного типа по каждому измерению могут быть разными.
? Какие ограничения накладываются на тип индексов (только скалярные типы, кроме вещественного)
? Есть ли ограничения на тип элементов (нет, элементы любые)
Обращение к элементам
? Как обращаются к элементам одномерного массива (указанием имени массива и индекса)
a[I,j], I – номер строки, j – номер столбца
1) Описать матрицу из 5 строк и 10 столбцов элементы которой числа в диапазоне 0..20
cost n=5; m=10;
a: array[1..n, 1..m] of 0..20;
2) Описать матрицу из 12 строк и 30 столбцов элементы которой вещественные числа
a: array[1..12, 1..30] of real;
- Алгоритмы формирования и вывода
? Сколько способов формирования линейного массива вы знаете
1) вводом с клавиатуры
for I:=1 to n do
for j:=1 to m do
read (a[I,j]);
? в каком направлении заполняется матрица (по строкам)
? Что изменить, чтобы заполнение шло по столбцам (поменять параметры местами)
2) случайным образом
randomize;
for I:=1 to n do
for j:=1 to m do
a[I,j]:=random(20);
3) по формуле (например, элемент равен сумме номера строки и столбца)
for I:=1 to n do
for j:=1 to m do
a[I,j]:=I+j;
4) Вывод матрицы по строкам
for I:=1 to n do
begin
for j:=1 to m do
write(a[i,j], ‘ ‘);
writeln;
end;