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