В тексте найти слова, начинающиеся и оканчивающиеся на гласные буквы - 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, то выводится сообщениеТаких слов нет
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д