Advertisement
Guest User

Untitled

a guest
Dec 10th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 2.77 KB | None | 0 0
  1. program SamRab;
  2. uses
  3.   System.SysUtils;
  4. Type
  5.     TArr = array of array of integer;
  6. Function InputSize(N: integer): integer;
  7. Begin
  8.     Writeln('Enter matrix size: ');
  9.     Readln(N);
  10.     InputSize := N;
  11. End;
  12. Function InputMatrix(Var Matrix: TArr; N: integer): TArr;
  13. Var
  14.     i,j: byte;
  15. Begin
  16.     for i := 0 to High(Matrix) do
  17.         for j := 0 to High(Matrix) do
  18.         Begin
  19.             Writeln('Enter [',i + 1,'][',j + 1,'] element of the matrix: ');
  20.             Readln(Matrix[i][j]);
  21.         End;
  22.     InputMatrix := Matrix;
  23. End;
  24. Procedure OutputMatrix(Matrix: TArr; N: integer);
  25. Var
  26.     i,j: byte;
  27. Begin
  28.     for i := 0 to High(Matrix) do
  29.     Begin
  30.         for j := 0 to High(Matrix) do
  31.             Write(Matrix[i,j]:6);
  32.         Writeln;
  33.     End;
  34. End;
  35. Function FindMaxElement(Matrix: TArr; N: integer): integer;
  36. Var
  37.     i,j: byte;
  38.     Max: integer;
  39. Begin
  40.     Max := Matrix[0,0];
  41.     for i := 0 to High(Matrix) - 1 do
  42.     Begin
  43.         for j := 0 to High(Matrix) - 1 do
  44.         Begin
  45.             If(Max < Matrix[i + 1,j + 1]) then
  46.                 Max := Matrix[i + 1,j + 1];
  47.         End;
  48.     End;
  49.     FindMaxElement := Max;
  50. End;
  51. Function Swap(Matrix: TArr; N: integer): integer;
  52. Var
  53.     i,j: byte;
  54.     tmp: integer;
  55.     multiply: integer;
  56.     NewMatrix: TArr;
  57. Begin
  58.     SetLength(NewMatrix,N,N);
  59.     for i := 0 to High(Matrix) do
  60.         for j := 0 to High(Matrix) do
  61.             NewMatrix[i,j] := Matrix[j,i];
  62.     Writeln('Transposed matrix: ');
  63.     OutputMatrix(NewMatrix,N);
  64.     Multiply := 1;
  65.     for i := 0 to High(Matrix) do
  66.     Begin
  67.         Multiply := Multiply * NewMatrix[i,i];
  68.     End;
  69.     Swap := Multiply;
  70. End;
  71. Function Comparison(Var Matrix: TArr; N,MaxElement,Multiply: integer): TArr;
  72. Var
  73.     i,j: byte;
  74. Begin
  75.     Writeln('Side Diagonal Product: ', Multiply);
  76.     Writeln('Max element of matrix : ', MaxElement);
  77.     if MaxElement > Multiply then
  78.     Begin
  79.         for i := 0 to High(Matrix) do
  80.             for j := 0 to High(Matrix) do
  81.                 Matrix[i,j] := Matrix[i,j] * MaxElement;
  82.     End;
  83.  
  84.     if MaxElement < Multiply then
  85.     Begin
  86.         for i := 0 to High(Matrix) do
  87.             for j := 0 to High(Matrix) do
  88.                 Matrix[i,j] := Matrix[i,j] - MaxElement;
  89.     End;
  90.     Comparison := Matrix;
  91. End;
  92. Procedure Main();
  93. Var
  94.     Matrix: TArr;
  95.     N: integer;
  96.     MaxElement: integer;
  97.     Multiply: integer;
  98. begin
  99.     N := InputSize(N);
  100.     Setlength(Matrix,N,N);
  101.     Matrix := InputMatrix(Matrix,N);
  102.     Writeln('Source matrix: ');
  103.     OutputMatrix(Matrix,N);
  104.     MaxElement := FindMaxElement(Matrix,N);
  105.     Multiply := Swap(Matrix,N);
  106.     Matrix := Comparison(Matrix,N,MaxElement,Multiply);
  107.     Writeln('Final matrix: ');
  108.     OutputMatrix(Matrix,N);
  109.     Readln;
  110. end;
  111. Begin
  112.     Main();
  113. End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement