Pas.0023. Напишите программу, которая подсчитывает количество вхождений образца-подстроки в данной строке.
В условии задачи не уточняется, каким образом подсчитывается количество вхождений в случаях наложения образцов в исходной строке, например, «строка — '111' и образец — '11'». Поэтому любой способ подсчета в таких случаях признается правильным.
Решение.
program ДемоКоличествоВхождений; function КоличествоВхождений(строка, образец : string) : integer; var счетчикВхождений : integer = 0; i, j : integer; begin for i := 1 to length(строка) - length(образец) + 1 do for j := 1 to length(образец) do if not (строка[i + j - 1] = образец[j]) then break else if j = length(образец) then счетчикВхождений := счетчикВхождений + 1; КоличествоВхождений := счетчикВхождений; end; begin write(КоличествоВхождений('12321', '3'), ', '); write(КоличествоВхождений('12321', '2'), ', '); write(КоличествоВхождений('123212321', '12321'), ', '); writeln(КоличествоВхождений('21212121212', '12'), ';'); write(КоличествоВхождений('123212321', ''), ', '); write(КоличествоВхождений('123212321', '11'), ', '); write(КоличествоВхождений('', '2'), ', '); writeln(КоличествоВхождений('1', '11'), ';'); write(КоличествоВхождений('11', '11'), ', '); write(КоличествоВхождений('111', '11'), ', '); writeln(КоличествоВхождений('1111', '11'), '.'); end.Консоль.
1, 2, 2, 5; 0, 0, 0, 0; 1, 2, 3.