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

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

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

В текстовом файле удалить все слова, начинающиеся с гласной буквы

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

textual
Листинг программы
  1. const nf = 'd:\text.txt';
  2.       nt = 'd:\temp.tmp';
  3.       wove = ['А', 'а', 'Е', 'е', 'Ё', 'ё', 'И', 'и', 'О', 'о',
  4.               'У', 'у', 'Ы', 'ы', 'Э', 'э', 'Ю', 'ю', 'Я', 'я',
  5.               'A', 'a', 'E', 'e', 'I', 'i', 'O', 'o', 'U', 'u']; {можете добавить Yy, но, вообще-то, эта БУКВА согласная}
  6.       sp = [' ', '.', ',', '!', '?', ':', ';']; {можно ещё немножко добавить (одиночных!) разделителей}
  7. var f, t: text;
  8.     si, so: string;
  9.     i: integer;
  10.     fwove: boolean;
  11. begin
  12.   assign(f, nf);
  13.   reset(f);
  14.   assign(t, nt);
  15.   rewrite(t);
  16.   while not eof(f) do
  17.     begin
  18.       readln(f, si);
  19.       si := ' ' + si;
  20.       so := '';
  21.       fwove := false;
  22.       for i := 2 to length(si) do
  23.         begin
  24.           if (si[i - 1] in sp) and not (si[i] in sp) then fwove := si[i] in wove;
  25.           if not fwove then so := so + si[i]
  26.         end;
  27.       if length(so) > 0 then writeln(t, so)
  28.     end;
  29.   close(f);
  30.   close(t);
  31.   erase(f);
  32.   rename(t, nf)
  33. end.

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

  1. const nf = 'd:\text.txt'; - объявляется путь к файлу text.txt
  2. const nt = 'd:\temp.tmp'; - объявляется путь к файлу temp.tmp
  3. var f, t: text; - объявляются переменные f и t типа text для работы с текстом
  4. var si, so: string; - объявляются переменные si и so типа string для работы со строками
  5. var i: integer; - объявляется переменная i типа integer для работы с целыми числами
  6. var fwove: boolean; - объявляется переменная fwove типа boolean для работы с логическими значениями
  7. begin - начинается блок кода
  8. assign(f, nf); - присваивается значение переменной f по указанному пути
  9. reset(f); - сбрасывается содержимое файла f
  10. assign(t, nt); - присваивается значение переменной t по указанному пути
  11. rewrite(t); - перезаписывается содержимое файла t
  12. while not eof(f) do - начинается цикл while до конца файла f
  13. begin - начинается внутренний блок кода цикла
  14. readln(f, si); - считывается одна строка из файла f в переменную si
  15. si := ' ' + si; - к переменной si добавляется пробел в начале
  16. so := ''; - переменная so инициализируется пустой строкой
  17. fwove := false; - переменная fwove инициализируется значением false
  18. for i := 2 to length(si) do - начинается цикл от i=2 до длины переменной si
  19. begin - начинается внутренний блок кода цикла
  20. if (si[i - 1] in sp) and not (si[i] in sp) then fwove := si[i] in wove; - проверяется условие: если предыдущий символ в строке si является одним из разделителей и текущий символ в строке si не является одним из разделителей
  21. if not fwove then so := so + si[i]; - если условие не выполняется, то к переменной so добавляется текущий символ из переменной si
  22. end; - заканчивается внутренний блок кода цикла
  23. end; - заканчивается внутренний блок кода цикла
  24. if length(so) > 0 then writeln(t, so); - если переменная so не пустая, то записывается ее значение в файл t
  25. close(f); - закрывается файл f
  26. close(t); - закрывается файл t
  27. erase(f); - удаляется файл f
  28. rename(t, nf); - переименовывается файл t в nf
  29. end. - заканчивается блок кода

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

12   голосов , оценка 4.167 из 5

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

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

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