В тексте найти слова, начинающиеся и оканчивающиеся на гласные буквы - Pascal

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Написать программу, которая считывает английский текст из файла и выводит на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы. Интересует непосредственно алгоритм нахождения необходимого слова. Благодарю за помощь!

Решение задачи: «В тексте найти слова, начинающиеся и оканчивающиеся на гласные буквы»

textual
Листинг программы
  1. const rz=[' ','.',',','-','?','!'];//символы, разделители слов, можно добавить
  2.       gl=['A','E','I','O','U']; //гласные буквы английского алфавита
  3. //........................................................
  4. //читаем строку из файла
  5. s:=' '+s;//добавим пробел в начало
  6. n:=length(s);
  7. i:=2;
  8. f:=0;
  9. while i<=n do
  10. if not(s[i] in rz)and (s[i-1] in rz) then//если не разделитель
  11.                                          //и перед ним разделитель, то начало слова*
  12.  begin
  13.   k:=i;
  14.   s1:='';
  15.   while (k<=n) and not(s[k] in rz) do //пока не разделитель и не конец строки
  16.    begin
  17.     s1:=s1+s[k];
  18.     k:=k+1;
  19.    end;
  20.   if (upcase(s1[1])in gl)and(upcase(s1[length(s1)])in gl) then
  21.    begin
  22.     writeln(s1);
  23.     k:=1;
  24.    end;
  25.   i:=i+length(s1);
  26.  end
  27. else i:=i+1;{пропускаем разделители}
  28. writeln(' ');
  29. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы