Написать программу, которая находит самое короткое слово в предложении - 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.
Объяснение кода листинга программы
- В программе объявлены следующие переменные: S - строка, в которую пользователь будет вводить предложения; D - массив символов, которые являются разделителями слов; Len, LenW, LenWMin - целые числа, которые представляют собой длину строки, минимальную длину слова и текущую минимальную длину слова соответственно; i, P - целые числа, которые представляют собой текущий символ и начальную позицию искомого слова в строке.
- В блоке repeat-until происходит цикл, в котором пользователь вводит предложение, а программа выводит запрос на повтор или выход.
- В блоке for происходит перебор символов строки слева-направо. Если текущий символ не принадлежит слову (то есть он является разделителем), то увеличивается длина текущего слова и проверяется, достигла ли она минимальной длины слова. Если это так, то программа запоминает минимальную длину слова и начальную позицию искомого слова.
- Если длина слова равна 1, то программа прерывает поиск, так как более короткого слова быть не может.
- В блоке if-else программа выводит первое самое короткое слово, если оно было найдено, или сообщение о том, что в тексте нет слов.
- В блоке readln программа считывает ввод пользователя и сохраняет его в переменной S.
- Цикл repeat-until продолжается до тех пор, пока S не станет пустой строкой.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д