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

[Ajuda] Comparação strings em c

Discussão em 'Programação' iniciada por HuSa, 23 de Abril de 2009. (Respostas: 9; Visualizações: 2126)

  1. HuSa

    HuSa Power Member

    Boas

    Eu tenho que fazer um programa em que cria um dicionário com algumas palavras e uma string.
    Depois tenho que verificar quais palavras do dicionário existem na string e contar o numero de vezes que estas existem.

    Ao implementar isto fiz este código mas a funçao strcmp não está a comparar, não sei porque.
    Gostaria que alguem me pode-se ajudar.
    Código:
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #define D_SIZE 5
    
    
    char dictionary[D_SIZE][20] = {};
    void find_words(char *s);
    
    int main(){
           char palavras[20],*frase[100];
           int n,i=0,k,j;
           for (i=0;i<D_SIZE;i++){
               printf("--insira a %d palavras do dicionario--\n",i+1);
               gets(palavras);
               for (k=0;k<strlen(palavras);k++){
                   dictionary[i][k]=palavras[k];
               }                 
           }
           printf("insira a frase a ser verificada\n");
           gets(frase);    
           //Passar a string frase para um vector de palavras
           find_words(&frase);
           system("PAUSE");
    }
    
    void find_words(char *frase){
           int i=0,j,k,count[D_SIZE];
           char * pch, *vect[20];
           pch = strtok (frase," ");
           while (pch != NULL)
           {
             vect[i]=pch;
             pch = strtok (NULL, " ");
             i++;
           }
           int cont[i-1];
           for(j=0;j<D_SIZE;j++)
           {
               count[j]=0;                 
               for(k=0;k<i;k++)
               {
                   if (strcmp(vect[k],dictionary[j])==0);
                   {
                       count[j]=count[j]+1;
                   }
               }
           }
           for(j=0;j<D_SIZE;j++)
           {
               if(count[j]>0)
                   printf("A palavra %s existe %d\n",dictionary[j],count[j]);
           }
    }
     
  2. S0ul

    S0ul Power Member

    Boas, mas o dictionary n era de dimensão dupla? Estás a usalo na comparação com 1 dimensão :/.

    Código:
    if (strcmp(vect[k],dictionary[j][k])==0)
    { 
          count[j]=count[j]+1;
    }
    
     
    Última edição: 23 de Abril de 2009
  3. HuSa

    HuSa Power Member

    A outra direcção é o numero de caracteres que o vector pode levar.
    Por isso não é necessário fazer isso.
     
  4. HuSa

    HuSa Power Member

    O j é uma variável que me permite avançar com os índices tanto do count como no dicionário.
     
  5. S0ul

    S0ul Power Member

    Esquece :). Tens razão, as strings sempre deram problemas, e já n brinco com c à que tempos :). Não tenho compilador para te testar isso, senão até te tentava ajudar :(.
     
  6. HuSa

    HuSa Power Member

    Obrigado na mesma.

    Eu tive que fazer a defesa disto e nem o professor consegui resolver o problema.
    Mas gostaria de saber qual é o problema, pois na teoria devia funcionar bem.
     
  7. S0ul

    S0ul Power Member

    Reparei agora que tinhas um ; nesse if, pa kÊ XD. Tira-o.
     
  8. HuSa

    HuSa Power Member

    Era mesmo só isso.

    Muito obrigado.
     
  9. S0ul

    S0ul Power Member

    Tens de dizer ao prof para veres se ficas com 20 XD.
     
  10. Boas :D
    Olha nao me consegues passar esse teu trabalho
    preciso de uma coisa parecida pra escola e tambem estou meio enrascado =)
     

Partilhar esta Página