В тексте найти слова, начинающиеся и оканчивающиеся на гласные буквы - Pascal
Формулировка задачи:
Здравствуйте!
Написать программу, которая считывает английский текст из файла и выводит на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы.
Интересует непосредственно алгоритм нахождения необходимого слова.
Благодарю за помощь!
Решение задачи: «В тексте найти слова, начинающиеся и оканчивающиеся на гласные буквы»
textual
Листинг программы
const rz=[' ','.',',','-','?','!'];//символы, разделители слов, можно добавить gl=['A','E','I','O','U']; //гласные буквы английского алфавита //........................................................ //читаем строку из файла s:=' '+s;//добавим пробел в начало n:=length(s); i:=2; f:=0; while i<=n do if not(s[i] in rz)and (s[i-1] in rz) then//если не разделитель //и перед ним разделитель, то начало слова* begin k:=i; s1:=''; while (k<=n) and not(s[k] in rz) do //пока не разделитель и не конец строки begin s1:=s1+s[k]; k:=k+1; end; if (upcase(s1[1])in gl)and(upcase(s1[length(s1)])in gl) then begin writeln(s1); k:=1; end; i:=i+length(s1); end else i:=i+1;{пропускаем разделители} writeln(' '); if f=0 then write('Таких слов нет');
Объяснение кода листинга программы
- Объявляются массивы символов
rz
иgl
со значениями:rz
: содержит разделители слов, такие как пробел, точка, запятая, тире, вопросительный знак, восклицательный знакgl
: содержит гласные буквы английского алфавита - A, E, I, O, U
- Прочитывается строка
s
из файла. - Добавляется пробел в начало строки
s
. - Вычисляется длина строки
s
и устанавливается переменнаяi
в 2, переменнаяf
в 0. - Выполняется цикл, пока
i
меньше или равноn
:- Проверяется, что текущий символ
s[i]
не является разделителем из массиваrz
и предыдущий символs[i-1]
является разделителем. Если это так, то слово начинается. - Устанавливается переменная
k
равнойi
и переменнаяs1
равной пустой строке. - Выполняется вложенный цикл, пока
k
меньше или равноn
и текущий символs[k]
не является разделителем:- К текущему значению переменной
s1
добавляется текущий символs[k]
. - Значение переменной
k
увеличивается на 1.
- К текущему значению переменной
- Если первая буква слова
s1
и последняя букваs1
являются гласными буквами (из массиваgl
), то выполняются следующие команды:- Выводится слово
s1
. - Устанавливается переменная
k
в 1.
- Выводится слово
- Значение переменной
i
увеличивается на длину словаs1
. - Если условие не выполняется, значение переменной
i
увеличивается на 1 (пропускаются разделители).
- Проверяется, что текущий символ
- Выводится пустая строка.
- Если значение переменной
f
равно 0, то выводится сообщениеТаких слов нет
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д