Advertisement
Ewerlost

AISD_LAB1

Feb 14th, 2024 (edited)
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 2.05 KB | None | 0 0
  1. Program Project2;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. {$R *.res}
  6.  
  7. uses
  8.   System.SysUtils;
  9.  
  10. Type
  11.     TPointer = ^TListElement;
  12.     TListElement = Record
  13.         Data : Integer;
  14.         Lnext : TPointer;
  15.  
  16.     End;
  17.  
  18. Function GetInt(Min, Max : Integer): Integer;
  19. Var
  20.     IsCorrect : Boolean;
  21.     N : Integer;
  22. Begin
  23.     Repeat
  24.         IsCorrect := True;
  25.         Try
  26.             Readln(N);
  27.         Except
  28.             IsCorrect := False;
  29.             Writeln('Вы ввели некорректные данные. Попробуйте снова.');
  30.         End;
  31.  
  32.         If IsCorrect And ((N > Max) Or (N < Min)) Then
  33.         Begin
  34.             IsCorrect := False;
  35.             Writeln('Введено значение не входящее в диапазон допустимых значений');
  36.         End;
  37.  
  38.     Until IsCorrect;
  39.  
  40.     GetInt := N;
  41.  
  42. End;
  43.  
  44.  
  45. procedure Make(N : Integer; Var First : TPointer);
  46. Var
  47.     I : Integer;
  48.     Temp : TPointer;
  49. Begin
  50.     New(First);
  51.     Temp := First;
  52.     First^.Data := 1;
  53.     new(First^.Lnext);
  54.     First := First^.Lnext;
  55.     for I := 2 to N do
  56.     Begin
  57.       New(First^.Lnext);
  58.       First^.Data := I;
  59.       if (I = N) then
  60.           First^.Lnext := Temp
  61.       else
  62.           First := First^.Lnext;
  63.     End;
  64. End;
  65.  
  66. procedure OutExcel(N, K : Integer);
  67. Var
  68.     Count : TPointer;
  69.     I, Meter : Integer;
  70. begin
  71.     New(Count);
  72.     Make(N, Count);
  73.     Meter := 1;
  74.     Write(N, ':', ' ');
  75.     while(Count^.Lnext <> Count) do
  76.     begin
  77.         if (Meter = k) then
  78.         begin
  79.             Write(Count^.Lnext.Data,' ');
  80.             Count^.Lnext := Count^.Lnext^.Lnext;
  81.             Meter := 0;
  82.         end
  83.         else
  84.         Count := Count^.Lnext;
  85.         Inc(Meter);
  86.  
  87.     end;
  88.     Write(' ', '|');
  89.     Writeln(Count^.Data);    
  90. end;
  91.  
  92.  
  93. var
  94.     I, K : Integer;
  95. begin
  96.     Write('Введите порядок удаления игроков : ');
  97.     K := GetInt(1,64);
  98.     writeln(1, ':', ' ',' ','|',1);
  99.     for I := 2 to 64 do
  100.         OutExcel(I, K);
  101.     Readln;
  102.    
  103.  
  104. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement