Guest User

Untitled

a guest
Apr 10th, 2014
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 3.28 KB | None | 0 0
  1. program q166072685;
  2.  
  3. uses
  4.   crt;
  5.  
  6. const
  7.   N = 4;
  8.  
  9. type
  10.   MATRIX = array[1..N, 1..N] of real;
  11.  
  12. var
  13.   A, B, B1 : MATRIX;
  14.   MDA, MDB1 : real;
  15.   AFile : text;
  16.   RowCount, ColCount : byte;
  17.  
  18. { Поиск максимального элемента главной диагонали матрицы }
  19. function MaxMainDiagonalElement(Matrix : MATRIX) : real;
  20. var
  21.   IndexCount : byte;
  22.   MaxElement : real;
  23. begin
  24.   MaxElement := Matrix[1, 1];
  25.   for IndexCount := 1 to N do
  26.     if (Matrix[IndexCount, IndexCount] > MaxElement) then
  27.       MaxElement := Matrix[IndexCount, IndexCount];
  28.   MaxMainDiagonalElement := MaxElement;
  29. end {MaxMainDiagonalElement};
  30.  
  31. { Ещё одна дополнительная функция, которая возвращает индекс минимального элемента строки }
  32. function GetMinElementIndex(Matrix : MATRIX; RowIndex : byte) : byte;
  33. var
  34.   ColIndex, MinElementIndex: byte;
  35. begin
  36.   MinElementIndex := 1;
  37.   for ColIndex := 1 to N do
  38.     if (Matrix[RowIndex, ColIndex] < Matrix[RowIndex, MinElementIndex]) then
  39.       MinElementIndex := ColIndex;
  40.   GetMinElementIndex := MinElementIndex;
  41. end {GetMinElementIndex};
  42.  
  43. { Формирование матрицы B1 }
  44. procedure CreateMatix;
  45. var
  46.   RowCount, ColCount, IndexCount : byte;
  47.   MinRowElementIndex : byte;
  48.   DiagonalElement : real;
  49. begin
  50.   { Сначала просто копируем исходную матрицу }
  51.   for RowCount := 1 to N do
  52.     for ColCount := 1 to N do
  53.       B1[RowCount, ColCount] := B[RowCount][ColCount];
  54.  
  55.   { Переставляем элементы по условию }
  56.   for IndexCount := 1 to N do
  57.   begin
  58.     MinRowElementIndex := GetMinElementIndex(B1, IndexCount);
  59.     DiagonalElement := B1[IndexCount, IndexCount];
  60.     B1[IndexCount, IndexCount] := B1[IndexCount, MinRowElementIndex];
  61.     B1[IndexCount, MinRowElementIndex] := DiagonalElement;
  62.   end;
  63. end;
  64.  
  65. begin
  66.   clrscr;
  67.  
  68.   { Читаем из файла и выводим матрицу A }
  69.   assign(AFile, 'A.txt');
  70.   reset(AFile);
  71.  
  72.   writeln('Матрица A:');
  73.   for RowCount := 1 to N do
  74.   begin
  75.     for ColCount := 1 to N do
  76.     begin
  77.       read(AFile, A[RowCount, ColCount]);
  78.       write(A[RowCount, ColCount]:7:2);
  79.     end;
  80.     writeln;
  81.   end;
  82.  
  83.   close(AFile);
  84.  
  85.   { Формируем и выводим матрицу B }
  86.   writeln(#13#10#13#10'Матрица B:');
  87.   for RowCount := 1 to N do
  88.   begin
  89.     for ColCount := 1 to N do
  90.     begin
  91.       B[RowCount, ColCount] := Sin(ColCount) - Cos(RowCount);
  92.       write(B[RowCount, ColCount]:7:2);
  93.     end;
  94.     writeln;
  95.   end;
  96.  
  97.   { Формируем и выводим матрицу B1 }
  98.   writeln(#13#10#13#10'Матрица B1:');
  99.   CreateMatix;
  100.   for RowCount := 1 to N do
  101.   begin
  102.     for ColCount := 1 to N do
  103.       write(B1[RowCount, ColCount]:7:2);
  104.     writeln;
  105.   end;
  106.  
  107.   { Находим наибольшие диагональные элементы }
  108.   MDA := MaxMainDiagonalElement(A);
  109.   MDB1 := MaxMainDiagonalElement(B1);
  110.  
  111.   writeln(#13#10#13#10'Максимальный элемент главной диагонали матрицы A = ', MDA:7:2);
  112.   writeln('Максимальный элемент главной диагонали матрицы B1 = ', MDB1:7:2);
  113.  
  114.   readkey;
  115. end.
Advertisement
Add Comment
Please, Sign In to add comment