Определить, сколько раз в строке встречается заданное слово - Pascal ABC (14813)

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

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

Определить, сколько раз в строке встречается заданное слово.

Решение задачи: «Определить, сколько раз в строке встречается заданное слово»

textual
Листинг программы
const N = 100;
type words = array[1..N] of string;
var input_str:string;   // исходная строка
var wrd_from_str:words;  // слова из строки
var cnt,l,match_count:byte;
var match_word:string;  // искомое слово
 
//процедура разбивает строку на слова
//@param s - исходная строка
//@param wrd - получаемый массив слов
//@param cnt - количество полученных слов
procedure DivStrToWrd(s:string;var wrd:words;var cnt:byte);
    var i,b:integer;
     divs:set of char;
     w:boolean;
    begin
    cnt :=0;
    divs:=[' ',',','.','!','?',':',';']; //разделители
    w:=false;
    s:=s+' ';
    for i:=1 to length(s) do
     begin
     if w then
      begin
      if s[i] in divs then
       begin
       inc(cnt);
       wrd[cnt]:=copy(s,b,i-b);
       w:=false;
       end;
      end else
      begin
      if not (s[i] in divs) then
       begin
       w:=true;
       b:=i;
       end;
      end;
     end;
    end;
 
  //main program
    begin
     input_str := 'adsfdsaf adsfsd fdsa fdsf? adsf adsf, adfdsf adsf';
     DivStrToWrd(input_str,wrd_from_str,cnt);
     match_word := 'adsf';
     match_count := 0;
     for l := 1 to cnt do
     begin
     Write('*', wrd_from_str[l], '* ');
     if wrd_from_str[l] = match_word then match_count := match_count + 1;
     end;
     writeln;
     writeln('matched: ',match_count);
    end.

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

const
N = 100; type words = array[1..N] of string; var input_str: string; wrd_from_str: words; cnt, l, match_count: byte; match_word: string; procedure DivStrToWrd(s: string; var wrd: words; var cnt: byte); var i, b: integer; divs: set of char; w: boolean; begin cnt := 0; divs := [' ',',','.','!','?',':',';']; //разделители w := false; s := s + ' '; for i := 1 to length(s) do begin if w then begin if s[i] in divs then begin inc(cnt); wrd[cnt] := copy(s, b, i — b); w := false; end; end else begin if not (s[i] in divs) then begin w := true; b := i; end; end; end; end; end; procedure MainProgram; var input_str := 'adsfdsaf adsfsd fdsa fdsf? adsf adsf, adfdsf adsf'; wrd_from_str := zeros(N, ''); //инициализация массива wrd_from_str cnt := 0; match_word := 'adsf'; match_count := 0; for l := 1 to cnt do begin Write('', wrd_from_str[l], ' '); if wrd_from_str[l] = match_word then match_count := match_count + 1; end; writeln; writeln('matched: ', match_count); end; end.

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


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

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

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