Vanilla_Fury

zakaz_17_02_2021

Feb 17th, 2021
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 1.97 KB | None | 0 0
  1. program zakaz_17_02_2021;
  2.  
  3. {$APPTYPE CONSOLE}
  4. {$R *.res}
  5.  
  6. uses
  7.     SysUtils;
  8.  
  9. var
  10.     Str: String;
  11.     N, i, NTemp, iTemp, QuantityOfElementsToAdd: Integer;
  12.     IsCorrect: Boolean;
  13.  
  14. begin
  15.     write('Введите число n: ');
  16.     repeat
  17.         try
  18.             readln(N);
  19.             IsCorrect := True;
  20.         except
  21.             IsCorrect := False;
  22.         end;
  23.         if (N < 1) or (N > 100) then
  24.             IsCorrect := False;
  25.  
  26.         if not IsCorrect then
  27.             write('Ошибка. Введите число от 1 до 1000: ');
  28.     until IsCorrect;
  29.  
  30.     writeln('Введите последовательность из ', N, ' символов: ');
  31.     repeat
  32.         readln(Str);
  33.         Str := Str.Trim;
  34.         if Length(Str) <> N then
  35.         begin
  36.             IsCorrect := False;
  37.             writeln('Вы ввели последовательность из ', Length(Str),
  38.                 ' символов. Введите последовательность из ', N,
  39.                 ' символов: ');
  40.         end
  41.         else
  42.             IsCorrect := True;
  43.     until IsCorrect;
  44.  
  45.     QuantityOfElementsToAdd := N - 1;
  46.  
  47.     for i := 1 to N do
  48.     begin
  49.         if Str[N] = Str[i] then
  50.         begin
  51.             NTemp := N;
  52.             iTemp := i;
  53.             while (Str[NTemp] = Str[iTemp]) and (NTemp - iTemp > 1) do
  54.             begin
  55.                 dec(NTemp);
  56.                 inc(iTemp);
  57.             end;
  58.  
  59.             if (iTemp = NTemp) then
  60.             begin
  61.                 QuantityOfElementsToAdd := 2 * iTemp - N - 1;
  62.                 break
  63.             end;
  64.  
  65.             if (NTemp - iTemp = 1) and (Str[NTemp] = Str[iTemp]) then
  66.             begin
  67.                 QuantityOfElementsToAdd := 2 * iTemp - N;
  68.                 break
  69.             end;
  70.         end;
  71.     end;
  72.  
  73.     for i := QuantityOfElementsToAdd downto 1 do
  74.         Str := Str + Str[i];
  75.  
  76.     writeln('Ответ: ', Str);
  77.  
  78.     readln;
  79. end.
Advertisement
Add Comment
Please, Sign In to add comment