Advertisement
Vladislav8653

Контрольная 4

Dec 1st, 2022
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 4.42 KB | None | 0 0
  1. //Задание: отсортироватть методом простого выбора первую четверть матрицы.
  2. Program KR4;
  3. Uses
  4.     System.SysUtils;
  5. Type
  6.     TMatrix = Array of Array of Integer;
  7.     TArray = Array of Integer;
  8. Function InputMatrixSize () : Integer; // вводим количество элементов в матрице. Целесообразно вводить число не менее 4
  9. Var
  10.     N : Integer;
  11. Begin
  12.     Writeln ('Введите размер матрицы:');
  13.     Readln(N);
  14.     InputMatrixSize := N;
  15. End;
  16. Function InputMatrix (N : Integer) : Tmatrix; // вводим элементы матрицы
  17. Var
  18.     I, J : Integer;
  19.     Matrix : TMatrix;
  20. Begin
  21.     Writeln ('Введите элементы матрицы:');
  22.     SetLength (Matrix, N, N);
  23.     For I := 0 to High(Matrix) do
  24.         For J := 0 to High(Matrix) do
  25.             Readln(Matrix[I,J]);
  26.     InputMatrix := Matrix;
  27. End;
  28. Function FirstQuarterToArray (Matrix : TMatrix; N : Integer) : TArray; // нужные для сортировки элементы (1-ая четверть) добавляются в одномерный массив
  29. Var
  30.     Quarter : TArray;
  31.     I, J, K : Integer;
  32. Begin
  33.     K := 0;
  34.     SetLength (Quarter, (N div 2) * (N div 2));
  35.     For I := 0 to High(Matrix) do
  36.         For J := 0 to High(Matrix) do
  37.             If (( I < N div 2) and (J < N div 2)) then
  38.                 Begin
  39.                     Quarter[K] := Matrix [I][J];
  40.                     Inc (K);
  41.                 End;
  42.     FirstQuarterToArray := Quarter;
  43. End;
  44. Function SortArrayByBubble (Quarter : TArray; N : Integer): TArray; // сортировка пузырьком, как я делал на кр, тк я не знал на тот момент другую.
  45. Var
  46.     I, J, K : Integer;
  47. Begin
  48.     For I := 0 to High(Quarter) do
  49.         For J := 0 to High(Quarter) - 1 do
  50.             If (Quarter[J + 1] < Quarter [J]) then
  51.                 Begin
  52.                     K := Quarter[J];
  53.                     Quarter [J] := Quarter [J + 1];
  54.                     Quarter [J + 1] := K;
  55.                 End;
  56.     SortArrayByBubble := Quarter;
  57. End;
  58.  
  59. Function SortArrayBySelectionSort (Quarter : TArray; N : Integer): TArray; // сортировка вставками, как надо было сделать.
  60. Var
  61.     I, J, IndexMin, Min : Integer;
  62. Begin
  63.     For I := 0 To High(Quarter) - 1 do
  64.         Begin
  65.             IndexMin := I;
  66.             For J :=  I + 1 To High(Quarter) do
  67.                 If (Quarter[J] < Quarter[I]) then
  68.                     IndexMin := J;
  69.             Min := Quarter[IndexMin];
  70.             Quarter[IndexMin] := Quarter[I];
  71.             Quarter[I] := Min;
  72.         End;
  73.      SortArrayBySelectionSort := Quarter;
  74. End;
  75.  
  76.  
  77. Function InputArrayInMatrix (Quarter : TArray; Matrix : TMatrix; N : Integer): TMatrix; // отсортированные элементы массива заносятся в матрицу обратно
  78. Var
  79.     I, J, K : Integer;
  80. Begin
  81.     K := 0;
  82.         For I := 0 to High(Quarter) do
  83.             For J := 0 to High(Quarter) do
  84.                 If (( I < N div 2) and (J < N div 2)) then
  85.                     Begin
  86.                         Matrix [I][J] := Quarter[K];
  87.                         Inc (K);
  88.                     End;
  89.     InputArrayInMatrix := Matrix;
  90. End;
  91. Function Solution (N : Integer; Matrix : TMatrix) : TMatrix; // тут просисходят весь алгоритм(input в массив из матрицы - сортировка - output в матрицу из массива)
  92. Var
  93.     Quarter : TArray;
  94. Begin
  95.     Quarter := FirstQuarterToArray(Matrix, N);
  96.     Quarter := SortArrayBySelectionSort(Quarter, N);
  97.     Matrix := InputArrayInMatrix (Quarter, Matrix, N);
  98.     Solution := Matrix;
  99. End;
  100. Procedure OutputMatrix ( N: Integer; Matrix : TMatrix);  // вывод матрицы в консоль
  101. Var
  102.     I, J : Integer;
  103. Begin
  104.     For I := 0 to High(Matrix) do
  105.         Begin
  106.             For J := 0 to High(Matrix) do
  107.                 Write(Matrix[I,J], ' ');
  108.             Writeln;
  109.         End;
  110. End;
  111.  
  112. Var
  113.     N : Integer;
  114.     Matrix : TMatrix;
  115. Begin
  116.     N := InputMatrixSize();
  117.     Matrix := InputMatrix(N);
  118.     Writeln('Исходная матрица:');
  119.     OutputMatrix (N, Matrix);
  120.     Matrix := Solution (N, Matrix);
  121.     Writeln('Отсортированная матрица:');
  122.     OutputMatrix (N, Matrix);
  123.     Readln;
  124. End.
  125.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement