program q166072685; uses crt; const N = 4; type MATRIX = array[1..N, 1..N] of real; var A, B, B1 : MATRIX; MDA, MDB1 : real; AFile : text; RowCount, ColCount : byte; { Поиск максимального элемента главной диагонали матрицы } function MaxMainDiagonalElement(Matrix : MATRIX) : real; var IndexCount : byte; MaxElement : real; begin MaxElement := Matrix[1, 1]; for IndexCount := 1 to N do if (Matrix[IndexCount, IndexCount] > MaxElement) then MaxElement := Matrix[IndexCount, IndexCount]; MaxMainDiagonalElement := MaxElement; end {MaxMainDiagonalElement}; { Ещё одна дополнительная функция, которая возвращает индекс минимального элемента строки } function GetMinElementIndex(Matrix : MATRIX; RowIndex : byte) : byte; var ColIndex, MinElementIndex: byte; begin MinElementIndex := 1; for ColIndex := 1 to N do if (Matrix[RowIndex, ColIndex] < Matrix[RowIndex, MinElementIndex]) then MinElementIndex := ColIndex; GetMinElementIndex := MinElementIndex; end {GetMinElementIndex}; { Формирование матрицы B1 } procedure CreateMatix; var RowCount, ColCount, IndexCount : byte; MinRowElementIndex : byte; DiagonalElement : real; begin { Сначала просто копируем исходную матрицу } for RowCount := 1 to N do for ColCount := 1 to N do B1[RowCount, ColCount] := B[RowCount][ColCount]; { Переставляем элементы по условию } for IndexCount := 1 to N do begin MinRowElementIndex := GetMinElementIndex(B1, IndexCount); DiagonalElement := B1[IndexCount, IndexCount]; B1[IndexCount, IndexCount] := B1[IndexCount, MinRowElementIndex]; B1[IndexCount, MinRowElementIndex] := DiagonalElement; end; end; begin clrscr; { Читаем из файла и выводим матрицу A } assign(AFile, 'A.txt'); reset(AFile); writeln('Матрица A:'); for RowCount := 1 to N do begin for ColCount := 1 to N do begin read(AFile, A[RowCount, ColCount]); write(A[RowCount, ColCount]:7:2); end; writeln; end; close(AFile); { Формируем и выводим матрицу B } writeln(#13#10#13#10'Матрица B:'); for RowCount := 1 to N do begin for ColCount := 1 to N do begin B[RowCount, ColCount] := Sin(ColCount) - Cos(RowCount); write(B[RowCount, ColCount]:7:2); end; writeln; end; { Формируем и выводим матрицу B1 } writeln(#13#10#13#10'Матрица B1:'); CreateMatix; for RowCount := 1 to N do begin for ColCount := 1 to N do write(B1[RowCount, ColCount]:7:2); writeln; end; { Находим наибольшие диагональные элементы } MDA := MaxMainDiagonalElement(A); MDB1 := MaxMainDiagonalElement(B1); writeln(#13#10#13#10'Максимальный элемент главной диагонали матрицы A = ', MDA:7:2); writeln('Максимальный элемент главной диагонали матрицы B1 = ', MDB1:7:2); readkey; end.