Определить количество слов 'For' и 'In' в строках текстового файла - Pascal

Узнай цену своей работы

Формулировка задачи:

Определить количество слов 'For'и'In' в строках тексового файла. Помогите, что здесь не так? Результат выдает нули
Листинг программы
  1. program test8;
  2. var
  3. f1:text;
  4. str:string;
  5. kf,ki:integer;
  6. procedure mypoisk2(str2:string; var ki2:integer);
  7. var
  8. i:integer;
  9. begin
  10. ki2:=0;
  11. for i:=1 to length(str2)-1 do
  12. begin
  13. if (str2[i]='I') and (str2[i+1]='N') then
  14. ki2:=ki2+1;
  15. end;
  16. end;
  17. procedure mypoisk3(str2:string; var kf2:integer);
  18. var
  19. i:integer;
  20. begin
  21. kf2:=0;
  22. for i:=1 to length(str2)-2 do
  23. begin
  24. if (str2[i]='F') and (str2[i+1]='O') and(str2[i+2]='R') then
  25. kf2:=kf2+1;
  26. end;
  27. end;
  28. begin
  29. assign(f1,'D:\myprogram.txt');
  30. reset(F1);
  31. while not eof(f1) do
  32. begin
  33. readln(f1,str);
  34. mypoisk2(str,ki);
  35. mypoisk3(str,kf);
  36. writeln('Kolychestvo in ',ki);
  37. writeln('Kolychestvo for ',kf);
  38. end;
  39. close(f1);
  40. end.

Решение задачи: «Определить количество слов 'For' и 'In' в строках текстового файла»

textual
Листинг программы
  1. program test8;
  2.  
  3.  
  4.  
  5.  function UppCase(S:string):string;
  6.  var i:integer;
  7.      Res:string;
  8.  begin
  9.  res:='';
  10.  for i:=1 to Length(S) do
  11.  res:=res+UpCase(s[i]);
  12.  Result:=res;
  13.  end;
  14.  
  15. function find(str:string;substr:string):integer;
  16. var count:integer;
  17. begin
  18. count:=0;
  19. while str<>'' do
  20.  begin
  21.   if(pos(UppCase(substr),UppCase(str))>0 ) then
  22.    begin
  23.      inc(count);
  24.      delete(str,1,pos(UppCase( substr),UppCase(str))+Length(substr));
  25.    end
  26.    else break;
  27.  end;
  28.   find:=count;
  29. end;
  30.  
  31. var
  32.  f1:text;
  33.  str:string;
  34.  kf,ki:integer;
  35. begin
  36. kf:=0;ki:=0;
  37. assign(f1,'C:\myprogram.txt');
  38. reset(F1);
  39.  while not eof(f1) do
  40.  begin
  41.   readln(f1,str);
  42.   ki:=ki+find(str,'in');
  43.   kf:=kf+find(str,'for');
  44.  end;
  45.  close(f1);
  46.   writeln('Kolychestvo in ',ki);
  47.   writeln('Kolychestvo for ',kf);
  48.  readln;
  49. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы