Определить количество слов 'For' и 'In' в строках текстового файла - Pascal
Формулировка задачи:
Определить количество слов 'For'и'In' в строках тексового файла.
Помогите, что здесь не так? Результат выдает нули
program test8; var f1:text; str:string; kf,ki:integer; procedure mypoisk2(str2:string; var ki2:integer); var i:integer; begin ki2:=0; for i:=1 to length(str2)-1 do begin if (str2[i]='I') and (str2[i+1]='N') then ki2:=ki2+1; end; end; procedure mypoisk3(str2:string; var kf2:integer); var i:integer; begin kf2:=0; for i:=1 to length(str2)-2 do begin if (str2[i]='F') and (str2[i+1]='O') and(str2[i+2]='R') then kf2:=kf2+1; end; end; begin assign(f1,'D:\myprogram.txt'); reset(F1); while not eof(f1) do begin readln(f1,str); mypoisk2(str,ki); mypoisk3(str,kf); writeln('Kolychestvo in ',ki); writeln('Kolychestvo for ',kf); end; close(f1); end.
Решение задачи: «Определить количество слов 'For' и 'In' в строках текстового файла»
textual
Листинг программы
program test8; function UppCase(S:string):string; var i:integer; Res:string; begin res:=''; for i:=1 to Length(S) do res:=res+UpCase(s[i]); Result:=res; end; function find(str:string;substr:string):integer; var count:integer; begin count:=0; while str<>'' do begin if(pos(UppCase(substr),UppCase(str))>0 ) then begin inc(count); delete(str,1,pos(UppCase( substr),UppCase(str))+Length(substr)); end else break; end; find:=count; end; var f1:text; str:string; kf,ki:integer; begin kf:=0;ki:=0; assign(f1,'C:\myprogram.txt'); reset(F1); while not eof(f1) do begin readln(f1,str); ki:=ki+find(str,'in'); kf:=kf+find(str,'for'); end; close(f1); writeln('Kolychestvo in ',ki); writeln('Kolychestvo for ',kf); readln; end.
Объяснение кода листинга программы
- Программа начинается с объявления функции
UppCase
с аргументомS
типаstring
и возвращаемым значением типаstring
. - В функции
UppCase
объявляется переменнаяi
целочисленного типа и переменнаяRes
строкового типа. - В цикле от 1 до длины строки
S
символы переводятся в верхний регистр и добавляются к итоговой строкеres
. - Возвращается значение переменной
res
. - Затем идет объявление функции
find
с двумя аргументами-строкамиstr
иsubstr
и возвращаемым значением типаinteger
. - В функции
find
объявляется переменнаяcount
типаinteger
. - Затем идет цикл, в котором осуществляется подсчет количества подстрок
substr
в строкеstr
, учитывая регистр символов. - В основной части программы объявляются переменные
f1
иstr
типаtext
иstring
соответственно, а также переменныеkf
иki
типаinteger
. - Выполняется открытие файла
myprogram.txt
и происходит чтение строк из файла. - Для каждой строки осуществляется подсчет количества подстрок
in
иfor
с помощью функцииfind
, и эти значения суммируются с предыдущими значениямиki
иkf
соответственно. - Файл закрывается, и на экран выводится количество подстрок
in
иfor
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д