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

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

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

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

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

textual
Листинг программы
const nf = 'd:\text.txt';
      nt = 'd:\temp.tmp';
      wove = ['А', 'а', 'Е', 'е', 'Ё', 'ё', 'И', 'и', 'О', 'о',
              'У', 'у', 'Ы', 'ы', 'Э', 'э', 'Ю', 'ю', 'Я', 'я',
              'A', 'a', 'E', 'e', 'I', 'i', 'O', 'o', 'U', 'u']; {можете добавить Yy, но, вообще-то, эта БУКВА согласная}
      sp = [' ', '.', ',', '!', '?', ':', ';']; {можно ещё немножко добавить (одиночных!) разделителей}
var f, t: text;
    si, so: string;
    i: integer;
    fwove: boolean;
begin
  assign(f, nf);
  reset(f);
  assign(t, nt);
  rewrite(t);
  while not eof(f) do
    begin
      readln(f, si);
      si := ' ' + si;
      so := '';
      fwove := false;
      for i := 2 to length(si) do
        begin
          if (si[i - 1] in sp) and not (si[i] in sp) then fwove := si[i] in wove;
          if not fwove then so := so + si[i]
        end;
      if length(so) > 0 then writeln(t, so)
    end;
  close(f);
  close(t);
  erase(f);
  rename(t, nf)
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
Похожие ответы