Типизированный файл, тип Char, нахождение нужной строки - Pascal
Формулировка задачи:
В типизированный файл записаны символы(File of Char), программа должна искать строчку lalala, в конце программа должна вывести количесво строчек,где есть lalala, при том, если строчка такая: lalalala, то у нас две строчки lalala. Будьте добры, подскажите, как это сделать.
Решение задачи: «Типизированный файл, тип Char, нахождение нужной строки»
textual
Листинг программы
const
fName = 'la.txt';
var
f : File of Char;
ch : Char;
trigerLA : Boolean;
countLA : Integer;
resultLA : Integer;
procedure lalala(var count : Integer);
begin
if count - 2 > 0 then
resultLA := resultLA + (count - 2);
count := 0;
end;
begin
resultLA := 0;
Assign(f, fName);
Reset(f);
trigerLA := False;
countLA := 0;
while Not EOF(f) do
begin
Read(f, ch);
{ собственно считаем тут }
if ch = 'l' then
trigerLA := True
else if (ch = 'a') and trigerLA then
begin
trigerLA := False;
Inc(CountLA);
end
else
begin
trigerLA := False;
lalala(CountLA);
end;
end;
if CountLA > 0 then
lalala(CountLa);
Close(f);
WriteLn(resultLA);
end.
Объяснение кода листинга программы
- Переменная
fNameсодержит имя файла, который нужно открыть. - Переменная
fявляется объектом типаFile of Char, который представляет собой файловый объект, связанный с файломfName. - Переменная
chявляется символом типаChar, который представляет собой отдельный символ из файла. - Переменная
trigerLAявляется булевым значением, которое указывает, был ли найден символ 'l' в файле. - Переменная
countLAявляется целым числом, которое отслеживает количество символов 'l' в файле. - Переменная
resultLAявляется целым числом, которое содержит итоговый результат обработки файла. - Функция
lalalaпринимает целое числоcountв качестве параметра и увеличивает значениеresultLAнаcount - 2. - В начале цикла
while Not EOF(f)выполняется следующее:- Чтение символа из файла
fв переменнуюch. - Проверка, равен ли символ 'l'. Если да, то устанавливается значение
trigerLAвTrue. - Если символ не равен 'l', но
trigerLAравноTrue, то устанавливается значениеtrigerLAвFalseи увеличивается значениеCountLAна 1. - Если символ не равен 'l' и
trigerLAравноFalse, то вызывается функцияlalalaс аргументомCountLA.
- Чтение символа из файла
- После окончания цикла
while Not EOF(f)выполняется следующее:- Закрытие файлового объекта
f. - Вывод значения
resultLAв консоль.
- Закрытие файлового объекта