Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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.
Advertisement
Add Comment
Please, Sign In to add comment