Двумерным массивом называется совокупность данных, каждое значение которых, зависит от его положения в строке и в столбце.
Каждый элемент двумерного массива описывается как a[i,j], где: где: а – имя массива i - номер строки j – номер столбца
Пример двумерного массива (матрицы): А[3,3]=
Если в матрице количество строк и столбцов совпадают, то она называется квадратной, в противном случае прямоугольной.
Главная диагональ квадратной матрицы проходит из левого верхнего угла в правый нижний. А[3,3]=
Побочная диагональ квадратной матрицы проходит из правого верхнего угла в левый нижний. А[3,3]=
Описание матрицы в разделе var аналогично описанию одномерного массива, только теперь необходимо указывать диапазон изменения столбцов и строк. Const n=10; m=12; Var a:array [1..n,1..m] of integer;
Для ввода матрицы в память существует много способов, это зависит от направления задачи. Рассмотрим два самых распространенных способа:
Writeln(Введите элементы матрицы по строкам); Writeln(В конце каждой строки нажимайте ENTER); For I:=1 to n do Begin For j:= 1 to m do For j:= 1 to m do Begin BeginReadln(a[i,j]);End;End;
Randomize; For I:=1 to n do Begin Begin For j:=1 to n do Begina[i,j]:=random(10); write(a[i,j], ); End;Writeln;End;
Вычисление суммы элементов главной диагонали квадратной матрицы: Задача 1
Для решения данной задачи необходимо определить, чем отличаются элементы главной диагонали? А[3,3]=
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); end.
Нахождение наибольших элементов каждой строки массива: Задача 2
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 beginmax[i]:=a[i,1]; for j:=2 to m do if max[i] ); for i:=1 to n do writeln(max[i]);end.
Перестановка строк массива: Задача 3
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 beginc:=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;end.
Задания для самостоятельной работы: Написать программы: 4. Заменить все нулевые элементы массива на максимальный элемент; 5. Нахождение количества положительных элементов побочной диагонали; 6. Нахождения суммы элементов в столбцах массива.
Решение задания 4 const n=3; m=4; var a:array [1..n,1..m] of integer; i, j, max: integer; Begin randomize; for i:=1 to n do begin for j:=1 to m do begin a[i,j]:=random(10)-5; write(a[i,j]:5); end; writeln; end; writeln; max:=a[1,1]; for i:=1 to n do for j:=1 to m do if max
Решение задания 5 Program Sumglav; const n=3; var a:array [1..n,1..n] of integer; i, j, k: integer; Begin randomize; for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=random(10)-5; write(a[i,j]:5); end; writeln; end; writeln; k:=0; for i:=1 to n do for j:=1 to n do if (i+j=4) and (a[i,j]>0) then k:=k+1; write('k= ',k); end.
Решение задания 6 const n=3; m=4; var a:array [1..n,1..m] of integer; S:array [1..m] of integer; i, j: integer; Begin for i:=1 to n do begin for j:=1 to m do begin a[i,j]:=random(10)-5; write(a[i,j]:5); end; writeln; end; writeln; for j:=1 to m do begin S[j]:=0; for i:=1 to n do S[j]:=S[j]+a[i,j]; write(' s[',j,']=',s[j]); end; end.
Домашнее задание Домашнее задание Вычислить сумму и число положительных элементов матрицы A[N, N], находящихся над главной диагональю.