Двумерные массивы
Двумерным массивом называется совокупность данных, каждое значение которых, зависит от его положения в строке и в столбце.
Каждый элемент двумерного массива описывается как a[i,j], где: а – имя массива i - номер строки j – номер столбца
Пример двумерного массива (матрицы):
Если в матрице количество строк и столбцов совпадают, то она называется квадратной, в противном случае прямоугольной.
Главная диагональ квадратной матрицы проходит из левого верхнего угла в правый нижний.
Побочная диагональ квадратной матрицы проходит из правого верхнего угла в левый нижний.
Описание матрицы в разделе var аналогично описанию одномерного массива, только теперь необходимо указывать диапазон изменения столбцов и строк. Const n=10; m=12; Var a:array [1..n,1..m] of integer;
Для ввода матрицы в память существует много способов, это зависит от направления задачи. Рассмотрим два самых распространенных способа:
Пример 1 (ввод с клавиатуры) Writeln(‘Введите элементы матрицы по строкам’); Writeln(‘В конце каждой строки нажимайте ENTER’); For I:=1 to n do Begin For j:= 1 to m do Begin Readln(a[i,j]); End; End;
Пример 2 (заполнение случайными числами) Randomize; For I:=1 to n do Begin For j:=1 to n do Begin a[i,j]:=random(10); write(a[i,j],’ ‘); End; Writeln; End;
Задачи базового минимума
Вычисление суммы элементов главной диагонали квадратной матрицы:
Для решения данной задачи необходимо определить, чем отличаются элементы главной диагонали?
Program Sumglav; const n=3; var a:array [1..n,1..n] of real; i, j: integer; S: real; Begin ВВОД МАССИВА; S:=0; for i:=1 to n do S:=S+a[i,i]; write(‘Сумма элементов главной диагонали = ’,S); readln; readln end.
Нахождение наибольших элементов каждой строки массива:
Program Stroki; const n=3; m=4 var a:array [1..n,1..m] of real; max:array [1..n] of real; i, j: integer; Begin ВВОД МАССИВА; for i:=1 to n do begin max[i]:=a[i,1]; for j:=2 to m do if max[i]<a[i,j] then max[i]:=a[i,j]; end; write(‘Наибольшие числа строк массива => ’); for i:=1 to n do writeln(max[i]); readln; readln end.
Перестановка строк массива:
Program Stroki2; const n=3; m=4; var a:array [1..n,1..m] of integer; i, j,k,l,c: integer; Begin ВВОД МАССИВА; writeln(‘Ведите номера меняемых местами строк’); readln(k,l); for j:=1 to m do begin c:=a[k,j]; a[k,j]:=a[l,j]; a[l,j]:=c; end; writeln(‘Новый массив => ’); for i:=1 to n do begin for j:=1 to m do write(a[i,j],’ ‘); writeln; end; readln; readln end.
Задания для самостоятельной работы: Написать программы: Нахождения наибольшего элемента всего массива; Нахождения наибольшего элемента главной диагонали; Нахождения наименьших элементов в столбцах массива.