Delphi-Help

Главная Статьи Текст и Строки Вывести те слова текста, которые отличны от последнего слова.

Вывести те слова текста, которые отличны от последнего слова.

Оцените материал
(0 голосов)


Вывести те слова текста, которые отличны от последнего слова.

program Project1;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils,
  Windows;
 
const
  //Разделители слов.
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
var
  S, Sw, Sw1 : String;
  i, j, Pos2, Len, LenW : Integer;
  F : Boolean;
begin
  SetConsoleCp(1251);
  SetConsoleOutputCP(1251);
 
  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
          //Это не последнее слово, отличное от последнего в строке.
          //Удаялем все предыдущие вхождения последней буквы.
          for j := LenW - 1 downto 1 do
            if Sw[j] = Sw[LenW] then Delete(Sw, j, 1)
          ;
          Writeln(Sw);
        end;
      end;
    end;
 
    Writeln('Повторить - Enter, выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
Прочитано 7867 раз

Авторизация



Счетчики