Program N42;
Label 1, 2, 3;
Var
A, B: String;
C : String;
K : Integer;
p : Integer;
N : Integer;
Begin
WriteLn
('PASCAL: Подсчет числа вхождений текста B в текст A с перекрытиями.');
WriteLn ('Введите текст A:');
ReadLn (A);
C := A;
WriteLn ('Введите текст B:');
ReadLn (B);
If Length (B) > Length (A) Then
Begin
WriteLn
('Текст B длиннее текста A, поэтому он не может входить в текст A.');
Goto 2;
End;
N := 0;
K := Length (B);
1: p := Pos (B, A);
If (p = 0) And (N = 0) Then
Begin
WriteLn ('Вхождений текста A в текст B нет.');
Goto 2;
End;
If (p = 0) Then Goto 3;
Delete (A, 1, K - 1 + p);
N := N + 1;
Goto 1;
3: WriteLn ('В текст "', C, '" текст "', B, '" входит ', N, ' раз(а).');
2: ReadLn;
End.