Удалить все слова, начинающиеся с гласной буквы - 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.
Объяснение кода листинга программы
- const nf = 'd:\text.txt'; - объявляется путь к файлу text.txt
- const nt = 'd:\temp.tmp'; - объявляется путь к файлу temp.tmp
- var f, t: text; - объявляются переменные f и t типа text для работы с текстом
- var si, so: string; - объявляются переменные si и so типа string для работы со строками
- var i: integer; - объявляется переменная i типа integer для работы с целыми числами
- var fwove: boolean; - объявляется переменная fwove типа boolean для работы с логическими значениями
- begin - начинается блок кода
- assign(f, nf); - присваивается значение переменной f по указанному пути
- reset(f); - сбрасывается содержимое файла f
- assign(t, nt); - присваивается значение переменной t по указанному пути
- rewrite(t); - перезаписывается содержимое файла t
- while not eof(f) do - начинается цикл while до конца файла f
- begin - начинается внутренний блок кода цикла
- readln(f, si); - считывается одна строка из файла f в переменную si
- si := ' ' + si; - к переменной si добавляется пробел в начале
- so := ''; - переменная so инициализируется пустой строкой
- fwove := false; - переменная fwove инициализируется значением false
- for i := 2 to length(si) do - начинается цикл от i=2 до длины переменной si
- begin - начинается внутренний блок кода цикла
- if (si[i - 1] in sp) and not (si[i] in sp) then fwove := si[i] in wove; - проверяется условие: если предыдущий символ в строке si является одним из разделителей и текущий символ в строке si не является одним из разделителей
- if not fwove then so := so + si[i]; - если условие не выполняется, то к переменной so добавляется текущий символ из переменной si
- end; - заканчивается внутренний блок кода цикла
- end; - заканчивается внутренний блок кода цикла
- if length(so) > 0 then writeln(t, so); - если переменная so не пустая, то записывается ее значение в файл t
- close(f); - закрывается файл f
- close(t); - закрывается файл t
- erase(f); - удаляется файл f
- rename(t, nf); - переименовывается файл t в nf
- end. - заканчивается блок кода
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д