Определить количество слов '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.

Объяснение кода листинга программы

  1. Программа начинается с объявления функции UppCase с аргументом S типа string и возвращаемым значением типа string.
  2. В функции UppCase объявляется переменная i целочисленного типа и переменная Res строкового типа.
  3. В цикле от 1 до длины строки S символы переводятся в верхний регистр и добавляются к итоговой строке res.
  4. Возвращается значение переменной res.
  5. Затем идет объявление функции find с двумя аргументами-строками str и substr и возвращаемым значением типа integer.
  6. В функции find объявляется переменная count типа integer.
  7. Затем идет цикл, в котором осуществляется подсчет количества подстрок substr в строке str, учитывая регистр символов.
  8. В основной части программы объявляются переменные f1 и str типа text и string соответственно, а также переменные kf и ki типа integer.
  9. Выполняется открытие файла myprogram.txt и происходит чтение строк из файла.
  10. Для каждой строки осуществляется подсчет количества подстрок in и for с помощью функции find, и эти значения суммируются с предыдущими значениями ki и kf соответственно.
  11. Файл закрывается, и на экран выводится количество подстрок in и for.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.583 из 5
Похожие ответы