Busca em cadeias
Este algoritmo busca a ocorrencia da cadeia s2 na cadeia s1 e retorna as posicoes do primeiro caracter de s2 na cadeia s1.
BuscaEmCadeias()
{
s1:cadeia; // a cadeia a ser pesquisada
s2:cadeia; // a informação a ser procurada
v1:vetor[80] de caracteres; // contem S1
v2:vetor[10] de caracteres; // contem S2
i:inteiro; // subscritor para a cadeia de pesquisa
j:inteiro; // subscritor para a cadeia a ser procurada
k:inteiro; // posicao do primeiro caracter de s2 em s1
c1:inteiro; // comprimento de s1
c2:inteiro; // comprimento de s2
achou:inteiro; // identifica se achou ou nao
leia("informe a cadeia de origem: ", s1);
leia("informe a cadeia a ser pesquisada: ", s2);
c1 := Comprimento(s1);
c2 := Comprimento(s2);
para ( i := 1 ate c1 passo 1 )
{
v1[i] := SubCadeia(s1,i,1);
}
para ( i := 1 ate c2 passo 1 )
{
v2[i] := SubCadeia(s2,i,1);
}
para ( i := 1 ate c1 passo 1 )
{
se ( v1[i] == v2[1] )
{
k := i+1;
// proximo caracter em s1 a ser comparado
j := 2;
// a comparacao inicia-se com o segundo caracter
// de s2
achou := 1;
// achou o primeiro caracter
// pelo menos temporariamente
enquanto ( j <= c2 & achou == 1 )
{
se ( v1[k] <> v2[j] )
{
achou := 0;
}
j := j + 1;
k := k + 1;
}
se ( achou == 1 )
{
escreva("encontrado na posicao: ",i);
//interrompa;
// retire o comentario da instrucao se desejar
// apenas a posicao da primeira ocorrencia
}
}
}
}