program Project1;
const
//Разделители слов.
D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
var
S, Sw, Sw1 : String;
Ch : Char;
i, Pos2, Len, LenW : Integer;
F : Boolean;
begin
repeat
Writeln('Задайте строку:');
Readln(S);
Writeln('Список слов, отличных от последнего слова.');
Writeln('Дополнительно, в этих словах первая буква перенесена в конец:');
Len := Length(S);
Pos2 := 0;
F := True;
for i := Len downto 1 do begin
//Пропускаем разделители.
if S[i] in D then Continue;
//Отслеживаем конец слова.
if (i = Len) or (S[i + 1] in D) then Pos2 := i;
//Отслеживаем начало слова.
if (i = 1) or (S[i - 1] in D) then begin
//Выделяем очередное слово из строки.
LenW := Pos2 - i + 1;
Sw := Copy(S, i, LenW);
if F then begin
//Это последнее слово в строке.
F := False;
Sw1 := Sw;
end else if Sw <> Sw1 then begin
//Это не последнее слово, отличное от последнего в строке.
//Переставляем первую букву в конец и распечатываем.
Ch := Sw[1];
Sw[1] := Sw[LenW];
Sw[LenW] := Ch;
Writeln(Sw);
end;
end;
end;
Writeln('Повторить - Enter, выход - любой символ + Enter.');
Readln(S);
until S <> '';
end.