algoritmos de procura- alguem sabe? -> RESOLVIDO

sdvferreira

Power Member
viva, procuro um algoritmo em C que procure numa string [][] uma palavra
do tipo: palavra "ana" numa string "a minha mana . pranana"

inventando um cadito :002: temos a palavra ana 3 vezes

:zzz:alguma ideia? :zzz:

não faço a mínima... :wow:
 
Última edição:
visto de outra maneira.. quando fiz a pergunta fiz de acordo com o meu problema..

tenho uma string str[20]= "ola mana pranana"

e quero encontrar uma palavra "ana"

em ola = 0 vezes
em mana = 1 vez
em pranana = 2 vezes

ora não sei como fazer isso :(
 
Acho q o melhor que tens a fazer e' percorrer a string caracter a caracter..
E quando encontras um 'a' (no exemplo do 'ana') vais verificar o caracter q esta a seguir (i+1) e o q esta depois (i+2).

Se o (i+1) for um n e o (i+2) for um a entao i=i+2 para continuares a pesquisa mais ah frente.
E dizes que encontrou, claro, ou gravas para ficheiro ou o q quer q seja q queres fazer.

Cumps
 
pois eu tenho essa ideia.. mas na pratica ... como funciona para palavras grandes..

estou a tentar fazer o algoritmo... já coloco aqui.. se tiveres algum deixa ;)

thanks
 
Pedes ao utilizador a frase e guardas numa string. Pedes a palavra a procurar e guardas noutra.

Fazes split á string que contem a frase, e guardas cada uma das palavras num vector de strings.

Depois percorres o vector. Se o comprimento da palavra na posição actual do vector for menor que o comprimento da palavra a pesquisar, passas á próxima posição do vector.

Senão, comparas o primeiro caracter da palavra dessa posição do vector, com o primeiro caracter da palavra a pesquisar. Se forem iguais, passas ao caracter seguinte de cada uma das palavras e comparas. Se forem iguais outra vez, passas ao seguinte. E isto até ao fim dos caracteres da palavra a pesquisar. Se for tudo igual, é só incrementar um contador.

Senão, quando um caracter não for igual, passas ao segundo caracter da palavra do vector, e começas a comparar de novo com os caracteres da palavra a pesquisar.

Penso que sej mais ou menos isto. Se fosse em Java, punha aqui o código, mas em C, não sei quais são as funções equivalentes.

EDIT: Vou fazer em Java, e depois tentar passar para algoritmo, e coloco-o aqui.
 
Última edição:
yahhhh... usa o strcmp da biblioteca string.h

facilita-te o trabalho.

mas como é k keres o output? mete ai um exemplo... keres k detecte a primeira ocorrência da palavra ana e a escreva no ecran, ou a localização dela, ou isto aplicado a todas as ocorrencias? Ou keres k o output te diga o número de ocorrencias em cada palavra da matriz?
 
Já pensaram que o objectivo seja mesmo ele fazer um algoritmo que faça o que ele pede, em vez de usar métodos do próprio C?

Também tive que fazer um exercicio em Java que dada uma data inicial e uma final, tendo em conta que o primeiro dia do primeiro mês do primeiro ano foi num Domingo, calculasse todas a sextas-feiras 13 do intervalo. Até seria relativamente fácil se fosse usado um método de Java que dada uma data, devolve o dia da semana correspondente. Mas não era essa a intenção do exercicio.
 
Já pensaram que o objectivo seja mesmo ele fazer um algoritmo que faça o que ele pede, em vez de usar métodos do próprio C?

Também tive que fazer um exercicio em Java que dada uma data inicial e uma final, tendo em conta que o primeiro dia do primeiro mês do primeiro ano foi num Domingo, calculasse todas a sextas-feiras 13 do intervalo. Até seria relativamente fácil se fosse usado um método de Java que dada uma data, devolve o dia da semana correspondente. Mas não era essa a intenção do exercicio.

nesse caso pediam-lhe isso mesmo, mas como ele não falou em objecções...
 
visto de outra maneira.. quando fiz a pergunta fiz de acordo com o meu problema..

tenho uma string str[20]= "ola mana pranana"

e quero encontrar uma palavra "ana"

em ola = 0 vezes
em mana = 1 vez
em pranana = 2 vezes

ora não sei como fazer isso :(

str[20] é a posição 20 do array str do tipo string...
parece-me mais que tu queres char[] (ou seja, uma string)

se queres mesmo fazer o algoritmo, é iterares pelo char[] e comparares.. :zzz:
 
Back
Topo