Записывать в файл все слова, начинающиеся с заданной буквы - Turbo Pascal
Формулировка задачи:
Написать программу, которая записывает в файл все слова, начинающиеся с задаваемой с клавиатуры буквы из исходного текстового файла. Словом считать набор символов, не содержащий пробелов, знаком препинания и ограниченный пробелами, знаками препинания или началом/концом строки. Если исходный файл не содержит подходящих слов, то оставить результирующий файл пустым.
Решение задачи: «Записывать в файл все слова, начинающиеся с заданной буквы»
textual
Листинг программы
{$MODE TP}
const
separators: Set Of Char = [' ', '.', ',', ';', ':', '!', '?'];
var
f, g: Text;
s, sWord: String;
c: Char;
begin
Assign(f, 'f.txt'); ReSet(f);
Assign(g, 'g.txt'); ReWrite(g);
Write('Input char: '); ReadLn(c);
while (Not EoF(f)) do
begin
ReadLn(f, s);
s := s + ' '; sWord := '';
while (Length(s) > 0) do
begin
if (s[1] in separators)
then
begin
if (sWord[1] = c)
then
WriteLn(g, sWord);
sWord := '';
end
else
sWord := sWord + s[1];
Delete(s, 1, 1);
end;
end;
Close(f); Close(g);
end.
Объяснение кода листинга программы
- В начале объявляются необходимые переменные: f, g — текстовые файлы, s, sWord — строки, c — символ.
- Затем устанавливаются ссылки на файлы: Assign(f, 'f.txt'); ReSet(f); Assign(g, 'g.txt'); ReWrite(g);
- Выводится запрос на ввод символа.
- В цикле while считывается строка из файла f и добавляется в s, затем в sWord.
- Если второй символ строки является одним из разделителей (',.!?'), то проверяется, начинается ли sWord с заданного символа. Если да, то записывается в файл g, затем sWord очищается.
- Если второй символ не является разделителем, то он добавляется к sWord.
- После завершения цикла while, файлы закрываются.