1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

algoritmos de procura- alguem sabe? -> RESOLVIDO

Discussão em 'Programação' iniciada por sdvferreira, 5 de Junho de 2007. (Respostas: 14; Visualizações: 1213)

  1. sdvferreira

    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: 6 de Junho de 2007
  2. sLiNk

    sLiNk Power Member

    Explica melhor.

    Pelo que vejo aí ( String[][] ), isso é uma matriz de strings.
     
  3. sdvferreira

    sdvferreira Power Member

    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 :(
     
  4. hYpe

    hYpe [email protected] Member

    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
     
  5. sdvferreira

    sdvferreira Power Member

    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
     
  6. sLiNk

    sLiNk Power Member

    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: 5 de Junho de 2007
  7. Apophis

    Apophis What is folding?

    Última edição: 5 de Junho de 2007
  8. Datwo

    Datwo I'm cool cuz I Fold

    fazes include do string.h e usas o strcmp ou o strstr
     
  9. Jeust

    Jeust Colaborador
    Staff Member

    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?
     
  10. PrOdG

    PrOdG Power Member

    .
     
  11. sLiNk

    sLiNk Power Member

    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.
     
  12. Datwo

    Datwo I'm cool cuz I Fold

    nesse caso pediam-lhe isso mesmo, mas como ele não falou em objecções...
     
  13. legerdemain

    legerdemain Power Member

    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:
     
  14. souto

    souto To fold or to FOLD?

    A solução com um método recursivo é de todas a mais elegante.

    Cumprimentos.
     
  15. sdvferreira

    sdvferreira Power Member

    Obrigado a todos ;)

    já está resolvido com o STRSTR();
     

Partilhar esta Página