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