Ir para conteúdo
Fórum Script Brasil
  • 0

PROCURAR STRING, E RETORNAR DESCRIÇAO


RAILSON DE JESUS DINIZ ROS

Pergunta

Boa tarde,

estou começando a aprender programação na linguagem c, e estou tentando descobrir onde que esta faltando código para o programinha que recebe um string, e retornar a descrição dessa palavra. Vocês podem me da esse bizu...

 

 #include <stdio.h>
#include <stdbool.h>


struct dicionario{
       char palavra[20];
       char definicao[50];
};

// compara duas palavras.

bool compararStrings(const char palavra1[], const char palavra2[]){
     int i = 0;
     while(palavra1 == palavra2 && palavra1 != '\0' && palavra2 != '\0'){
             ++i;
     }
     if (palavra1 == '\0' && palavra2 == '\0'){
           return true;
     }else{
           return false;     
     }

}

// procura String.

int procurarStrings(const struct dicionario lingua[], const char procurar[], const int numDePalavras){
    
    bool compararStrings(const char palavra1[], const char palavra2[]);
    
    int i = 0;
    while(i < numDePalavras){
            if (compararStrings(procurar, lingua.palavra)){
               return i;      
            }else{
               ++i;   
            }
    }
        return -1;
}


int main(void){
    
    int procurarStrings(const struct dicionario lingua[], const char procurar[], const int numDePalavras);
    
    const int N = 7;
    char palavraI[20] = {'\0'};
    int resultadoPesquisa;
    
    const struct dicionario portugues[N] =
    {
    {"pao","comida de farinha."},
    {"mortadela","comida de carne."},
    {"feijao","comida basileiria."},
    {"tropero","tipo de feijao."},
    {"queijo","derivado do leite."},
    {"macaronada","de macarrao."},
    {"pizza","tipico da Italia."}
    };
     
     // interação com o usuário.
     printf("Digite uma palavra: ");
     scanf("%s\n", &palavraI);
     
      
     resultadoPesquisa = procurarStrings(portugues, palavraI, N);
     
         
     if(resultadoPesquisa != -1){
     printf("%s\n", portugues[resultadoPesquisa].definicao);                   
     } else {
       printf("palavra não encontrada!\n");
     }
          
    getchar();
    return 0;
} 

 

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Olá @RAILSON DE JESUS DINIZ ROSExiste um erro, os índices não atribuídos necessários para acessar e gravas informações nos espaços dos vetores. Corrigindo funcionou  

struct dicionario {
       char palavra[20];
       char definicao[50];
};

//** compara duas palavras. */
bool compararStrings(const char palavra1[], const char palavra2[]){
     int i = 0;
     while(palavra1[i] == palavra2[i] && palavra1[i] != '\0' && palavra2[i] != '\0'){
             ++i;
     }
     if (palavra1[i] == '\0' && palavra2[i] == '\0'){
           return true;
     }else{
           return false;
     }

}

// procura String.

int procurarStrings(const struct dicionario lingua[], const char procurar[], const int numDePalavras){

    bool compararStrings(const char palavra1[], const char palavra2[]);

    int i = 0;
    while(i < numDePalavras){
            if (compararStrings(procurar, lingua[i].palavra)){
               return i;
            }else{
               ++i;
            }
    }
        return -1;
}


int main(void){
    const int N = 7;
    char palavraI[20] = {'\0'};
    int resultadoPesquisa;

    const struct dicionario portugues[7] =
    {
        {"pao","comida de farinha."},
        {"mortadela","comida de carne."},
        {"feijao","comida basileiria."},
        {"tropero","tipo de feijao."},
        {"queijo","derivado do leite."},
        {"macaronada","de macarrao."},
        {"pizza","tipico da Italia."}
    };

     // interação com o usuário.
     printf("Digite uma palavra: ");
     scanf(" %s",palavraI);


     resultadoPesquisa = procurarStrings(portugues, palavraI, N);


     if(resultadoPesquisa != -1){
     printf("%s\n", portugues[resultadoPesquisa].definicao);
     } else {
       printf("palavra não encontrada!\n");
     }
    getchar();
    return 0;
}

Dessa maneira funciona tudo como esperado!?

Link para o comentário
Compartilhar em outros sites

  • 0
Em 19/07/2019 em 19:38, britivaldo disse:

Olá @RAILSON DE JESUS DINIZ ROSExiste um erro, os índices não atribuídos necessários para acessar e gravas informações nos espaços dos vetores. Corrigindo funcionou  


struct dicionario {
       char palavra[20];
       char definicao[50];
};

//** compara duas palavras. */
bool compararStrings(const char palavra1[], const char palavra2[]){
     int i = 0;
     while(palavra1[i] == palavra2[i] && palavra1[i] != '\0' && palavra2[i] != '\0'){
             ++i;
     }
     if (palavra1[i] == '\0' && palavra2[i] == '\0'){
           return true;
     }else{
           return false;
     }

}

// procura String.

int procurarStrings(const struct dicionario lingua[], const char procurar[], const int numDePalavras){

    bool compararStrings(const char palavra1[], const char palavra2[]);

    int i = 0;
    while(i < numDePalavras){
            if (compararStrings(procurar, lingua[i].palavra)){
               return i;
            }else{
               ++i;
            }
    }
        return -1;
}


int main(void){
    const int N = 7;
    char palavraI[20] = {'\0'};
    int resultadoPesquisa;

    const struct dicionario portugues[7] =
    {
        {"pao","comida de farinha."},
        {"mortadela","comida de carne."},
        {"feijao","comida basileiria."},
        {"tropero","tipo de feijao."},
        {"queijo","derivado do leite."},
        {"macaronada","de macarrao."},
        {"pizza","tipico da Italia."}
    };

     // interação com o usuário.
     printf("Digite uma palavra: ");
     scanf(" %s",palavraI);


     resultadoPesquisa = procurarStrings(portugues, palavraI, N);


     if(resultadoPesquisa != -1){
     printf("%s\n", portugues[resultadoPesquisa].definicao);
     } else {
       printf("palavra não encontrada!\n");
     }
    getchar();
    return 0;
}

Dessa maneira funciona tudo como esperado!?

@britivaldo muito obrigado, queria pedir um coisinha a mais. Sou iniciante e seria possível voce pontuar onde mudou????

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...