Удалить все слова, начинающиеся с гласной буквы - 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. - заканчивается блок кода
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д