Solução em Pascal do Problema 6

program StringMatching;

const tamMax=100;
type indices=1..tamMax;
     segCarac=array[indices] of Char;
var m, n, i, j, numOcor : Integer;
    ocorre : Boolean;
    frase, palavra : segCarac;

begin
 readLn(m);
 for i:=1 to m do read(frase[i]);
 readLn;
 readLn(n);
 for i:=1 to n do read(palavra[i]);
 readLn;
 numOcor:=0;
 
 for i:=1 to m-n+1 do
  begin
   if frase[i]=palavra[1]
   then begin
    j:=2;
    ocorre:=true;
    while (j<=n) and ocorre do
     if palavra[j]=frase[i+j-1]
      then j:=j+1
      else ocorre:=false;
    if ocorre
     then numOcor:=numOcor+1
    end
 end;
 writeLn(numOcor)
end.


Lista de Problemas

História da Computação | Listas de Exercícios | Problemas Resolvidos | macmulti@ime.usp.br