Определить, сколько раз в строке встречается заданное слово - Pascal ABC (14813)
Формулировка задачи:
Решение задачи: «Определить, сколько раз в строке встречается заданное слово»
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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д