Поиск по разделу «Программирование»

Количество вхождений образца-подстроки в данной строке

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.