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

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

  1. Объявляются массивы символов rz и gl со значениями:
    • rz: содержит разделители слов, такие как пробел, точка, запятая, тире, вопросительный знак, восклицательный знак
    • gl: содержит гласные буквы английского алфавита - A, E, I, O, U
  2. Прочитывается строка s из файла.
  3. Добавляется пробел в начало строки s.
  4. Вычисляется длина строки s и устанавливается переменная i в 2, переменная f в 0.
  5. Выполняется цикл, пока 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 (пропускаются разделители).
  6. Выводится пустая строка.
  7. Если значение переменной f равно 0, то выводится сообщение Таких слов нет.

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

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