Написать программу, которая находит самое короткое слово в предложении - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

1) Дана строка символов, состоящая из нескольких слов. Написать программу, которая находит самое короткое слово в предложении.

Решение задачи: «Написать программу, которая находит самое короткое слово в предложении»

textual
Листинг программы
program Project1;
 
const
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13]; {Разделители слов.}
var
  S : String;
  i, P, Len, LenW, LenWMin : Integer;
begin
  repeat
    Writeln('--------------------------------------------------');
    Writeln('Задайте строку:');
    Readln(S);
 
    {Решение.}
    Len := Length(S);    {Длина строки.}
    LenWMin := Len + 1;  {Наименьшая длина слова.}
    LenW := 0;           {Длина текущего слова.}
    P := 0;              {Начальная позиция искомого слова.}
    for i := 1 to Len do {Перебор символов строки слева-направо.}
      if not (S[i] in D) then {Если символ принадлежит слову.}
      begin
        Inc(LenW); {Учитываем очередную букву в длине слова.}
        if (i = Len) or (S[i + 1] in D) then {Отслеживаем конец слова.}
        begin
          if LenW < LenWMin then {Если нашли слово, которое короче всех предыдущих.}
          begin
            LenWMin := LenW;     {Запоминаем текущую наименьшую длину слова.}
            P := i - LenW + 1;   {Запоминаем начальную позицию найденного слова.}
            if LenW = 1 then     {Если длина слова оказалась равной 1.}
              Break; {Более короткого слова быть не может, поэтому прерываем поиск.}
          end;
          LenW := 0; {Сброс длины текущего слова.}
        end;
      end;
 
    {Ответ.}
    if P > 0 then
      Writeln('Первое самое короткое слово: ', Copy(S, P, LenWMin))
    else
      Writeln('В тексте нет слов.');
 
    Write('Повторить - Enter. Выход - любой символ + Enter. ');
    Readln(S);
  until S <> '';
end.

Объяснение кода листинга программы

  1. В программе объявлены следующие переменные: S - строка, в которую пользователь будет вводить предложения; D - массив символов, которые являются разделителями слов; Len, LenW, LenWMin - целые числа, которые представляют собой длину строки, минимальную длину слова и текущую минимальную длину слова соответственно; i, P - целые числа, которые представляют собой текущий символ и начальную позицию искомого слова в строке.
  2. В блоке repeat-until происходит цикл, в котором пользователь вводит предложение, а программа выводит запрос на повтор или выход.
  3. В блоке for происходит перебор символов строки слева-направо. Если текущий символ не принадлежит слову (то есть он является разделителем), то увеличивается длина текущего слова и проверяется, достигла ли она минимальной длины слова. Если это так, то программа запоминает минимальную длину слова и начальную позицию искомого слова.
  4. Если длина слова равна 1, то программа прерывает поиск, так как более короткого слова быть не может.
  5. В блоке if-else программа выводит первое самое короткое слово, если оно было найдено, или сообщение о том, что в тексте нет слов.
  6. В блоке readln программа считывает ввод пользователя и сохраняет его в переменной S.
  7. Цикл repeat-until продолжается до тех пор, пока S не станет пустой строкой.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы