В тексте найти слова, начинающиеся и оканчивающиеся на гласные буквы - 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, то выводится сообщениеТаких слов нет.