Тема: ФАЙЛЫ (текстовые файлы)
Цель работы: освоение приемов объявления файлов и овладение навыками обработки текстовых файлов.
Образцы решения задач.
Задача № 1. Дан символьный файл f. Напишите программу подсчета количества букв 'т' в заданном файле. Выведите на экран соответствующие сообщения, если таких букв нет, если их количество превышает некоторое заданное число или не превышает.
Постановка задачи.
Каждый символ текстового файла сравниваем с буквой 'т', в случаи совпадения, счетчик увеличиваем. Значение счетчика сравниваем с заданным числом и выдаем соответствующее сообщение.
Текстовый файл создается в каком-либо текстовом редакторе.
Входные данные.
Текстовый файл – f.
Заданное число – ch (тип - целый).
Выходные данные.
Сообщение в соответствии с условием задачи.
Алгоритм.
1. Ввести число.
2. Подсчитать количество букв 'т' в файле.
3. Сравнить количество букв 'т' с заданным числом и выдать соответствующее сообщение.
Текст программы
Модуль.
unit obr_stroki;
Interface
procedure rezul(stkoll, chh: word);
function koll(var st: text):word;
Implementation
procedure rezul(stkoll, chh: word);
Begin
if stkoll=0 then
WriteLn(’в файле нет букв “т”’)
Else
if stkoll>chh then
WriteLn(’букв “т” в файле больше, чем заданное число’)
Else
if stkoll=chh then
WriteLn(’равное количество’)
Else
WriteLn(’букв “т” в файле меньше, чем заданное число’)
end;
function koll(var st: text):word;
Var
k, chl, i: word;
txtt: string;
Begin
{$I-}
ReSet(st);
{$I+}
if IOResult <> 0 then
writeln(’ошибка открытия файла’)
Else begin
k:=0;
while not SEEKEOF(st) do begin
ReadLn(st, txtt);
chl:=length(txtt);
for i:=1 to chl do
if txtt[i]= ’т’ then
k:=k+1;
end;
koll:=k;
Close(st);
end;
end;
End.
Основная программа.
uses obr_stroki;
Var
f: text;
stkol, ch: word;
Begin
Assign(st, ’F:\fttt.txt’);
WriteLn(’введите число’);
ReadLn(ch);
stkol:=koll(f);
rezul(stkol, ch)
end.
Задача № 2. Дан символьный файл f. Преобразовать его следующим образом: если нет символа '*', то оставить его без изменений, иначе заменить каждый символ '*', встречающийся после первого его вхождения, на символ '-'. Результат записать в файл g.
Постановка задачи.
В задаче необходимо использовать типовой алгоритм поиск по ключу, а также стандартные функции обработки строки: удаления и вставки.
Исходный текстовый файл (f) создается в каком-либо текстовом редакторе.
Входные данные.
Текстовый файл – f.
Выходные данные.
Текстовый файл – g.
Алгоритм.
1. Поиск первого символа ’*’ в исходном файле (f), алгоритм поиска по ключу.
2. Замена каждого символа ’*’, после первого его вхождения, на символ ’-’.
2.1. считать строку из исходного файла;
2.2. каждый символ считанной строки проверить, если символа ’*’, удалить и на его место вставить символ ’-’, перейти к следующему элементу строки;
2.3. преобразованную строку записать в новый файл (g).
Текст программы.
Var
f, g: text;
fl: boolean;
num: word;
procedure poisk(var flag: boolean; var numm: word);
Var
txtt: string; i, j: word;
Begin
j:=1;
flag:=true;
while (not SEEKEOF(f)) and flag do begin
ReadLn(f, txtt);
i:=1;
while flag and (i<=length(txtt)) do
if txtt[i]= ’*’ then begin
flag:=false;
numm:=j;
End