Egor_Vakar

Vike

Nov 2nd, 2021 (edited)
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 2.00 KB | None | 0 0
  1. program lab1;
  2. {$APPTYPE CONSOLE}
  3. {$R *.res}
  4. uses
  5.   System.SysUtils;
  6. const
  7.     ARR_LENGTH_MAX = 4;
  8.     EPS = 0.0001;
  9. type TArr = array[1..ARR_LENGTH_MAX] of integer;
  10. var
  11.     Arr: TArr;
  12.     i, j,k, Temp, Perm, Comp: integer;
  13.     WasChange: Boolean;    //флаг(будет показывать, были ли замены(заходили ли мы в while))
  14. begin
  15.     comp := 0;  //тут понятно
  16.     perm := 0;  //
  17.     for i := 1 to ARR_LENGTH_MAX  do
  18.         readln(Arr[i]);
  19.  
  20.     for i := 1 to ARR_LENGTH_MAX  do
  21.         write (Arr[i]:4);
  22.     writeln;
  23.     for i := 2 to ARR_LENGTH_MAX do
  24.     begin
  25.         WasChange := False;
  26.         Temp := Arr[i];
  27.         j := i - 1;
  28.  
  29.         while (j >= 1) and (Arr[j] > Temp) do
  30.         begin
  31.             WasChange := True;
  32.             Comp := Comp + 1;    //
  33.             Perm := Perm + 1;    //если мы зашли в цикл, то мы переставляем елемент на 1 вперёд(+1 перестановка), а значит мы с ним 1 раз сравнивали.
  34.             Arr[j + 1] := Arr[j];
  35.             j := j - 1;
  36.             for k := 1 to ARR_LENGTH_MAX  do
  37.                 write (Arr[k]:4);
  38.             writeln('           перестановок:', perm, ' сравнений:', comp);
  39.         end;
  40.         if WasChange then         // если мы что-то меняли местами в этой итерации for, значит у нас + 2 перестановки от темп переменной
  41.             Perm := Perm + 2      //
  42.         else                      // если нет, то +1 сравнение, так как мы в цикл не зашли, значит сравнили, но было не больше
  43.             comp := comp + 1;     //
  44.         Arr[j + 1] := Temp;
  45.  
  46.         for k := 1 to ARR_LENGTH_MAX  do
  47.             write (Arr[k]:4);
  48.         writeln('           перестановок:', perm, ' сравнений:', comp);
  49.  
  50.     end;
  51.     writeln;
  52.     readln;
  53. end.
Add Comment
Please, Sign In to add comment