Написать программу, которая считывает текст из файла и выводит его на экран, меняя местами каждые два соседних слова- Pascal(Паскаль)

program Project1;
 
const
  //Разделители слов.
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
  Fn = 'file.txt';
var
  F : Text;
  S, S1, Sw1, Sw2 : String;
  i, j, Pos1, Len : Integer;
begin
  Assign(F, Fn);
  Reset(F);
 
  while not Eof(f) do begin
    Readln(F, S);
 
    Len := Length(S);
    //Предыдущее слово.
    Sw1 := '';
    //Текущее (очередное) слово.
    Sw2 := '';
    //Позиция начала слова (индекс первой буквы в слове).
    Pos1 := 0;
    //Результирующая строка.
    S1 := '';
    //Счётчик слов.
    j := 0;
    for i := 1 to Len do begin
      //Пропускаем разделители.
      if S[i] in D then Continue;
      //Отслеживаем начало слова.
      if (i = 1) or (S[i - 1] in D) then Pos1 := i;
      //Отслеживаем конец слова.
      if (i = Len) or (S[i + 1] in D) then begin
        //Счётчик слов.
        Inc(j);
        Sw1 := Sw2;
        Sw2 := Copy(S, Pos1, i - Pos1 + 1);
        //Распечатываем пары.
        if j mod 2 = 0 then begin
          if S1 <> '' then S1 := S1 + ' ';
          S1 := S1 + Sw2 + ' ' + Sw1;
        end;
      end;
    end;
    //Распечатываем последнее слово, если оно оказалось без пары.
    if (j > 0) and (j mod 2 <> 0) then begin
      if S1 <> '' then S1 := S1 + ' ';
      S1 := S1 + Sw2;
    end;
    Writeln(S1);
  end;
 
  Close(F);
  Readln;
end.

Leave a Comment

60 + = 63