Дан текст состоящий из слов,разделенных пробелами. найти самое длинное слово, начинающееся и заканчивающееся на букву «т»- Pascal(Паскаль)

program Project1;
 
const
  //Множество разделителей слов.
  D = [' ', '.', ',', ':', ';', '!', '?', '-', #9, #10, #13];
var
  S, StrW : String;
  i, Pos1, PosW, Len, LenW, LenWMax : Integer;
begin
  repeat
    //Исходный текст.
    Writeln('Задайте текст:');
    Readln(S);
 
    //Поиск координат первого из самых длинных слов,
    //которые начинаются и заканчивается на букву 'т'.
    Len := Length(S);
    LenWMax := 0;
    PosW := 0;
    Pos1 := 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
        //Если слово начинается и заканчивается на букву 'т'.
        if (S[Pos1] in ['т', 'Т', 't', 'T']) and (S[i] in ['т', 'Т', 't', 'T']) then begin
          //Вычисляем длину слова.
          LenW := i - Pos1 + 1;
          //Если это слово длиннее всех ранее найденных слов, то
          //запоминаем его координаты и его длину.
          if LenW > LenWMax then begin
            LenWMax := LenW;
            PosW := Pos1;
          end;
        end;
      end;
    end;
 
    //Показываем результат.
    if PosW > 0 then begin
      //Искомое слово.
      StrW := Copy(S, PosW, LenWMax);
      Writeln('Первое из самых длинных слов с буквой "т" в начале и в конце:');
      Writeln(StrW);
    end else begin
      Writeln('Слов, удовлетворяющих условию не найдено.');
    end;
 
    Writeln('Повторить - Enter. Выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.

Leave a Comment

56 − 52 =