Dictionary in C always returns "word not found"

3

I'm having problems with the code below. Although the user types an available word, the return is always palavra nao encontrada .

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

struct dicionario {     
    char palavra[21];
    char definicao[51];     
};

bool compararpalavras (const char palavra1[], const char palavra2[]) {      
    int x = 0;      
    while (palavra1[x] == palavra2[x] && palavra1[x] != '
#include <stdio.h>
#include <stdbool.h>

struct dicionario {     
    char palavra[21];
    char definicao[51];     
};

bool compararpalavras (const char palavra1[], const char palavra2[]) {      
    int x = 0;      
    while (palavra1[x] == palavra2[x] && palavra1[x] != '%pre%' && palavra2[x] !='%pre%') {
        ++x;                
    }
    if (palavra1[x] == '%pre%' && palavra2[x] == '%pre%') {           
        return true;            
    } else {            
        return false;           
    }
}

int procurarpalavras (const struct dicionario lingua[], const char palavra[], const int numdepalavras) {        
    bool compararpalavras (const char palavra1[], const char palavra2[]);       
    int x = 0;      
    while (x < numdepalavras) {         
        if (compararpalavras(procurarpalavras, lingua[x].palavra)) {                
            return x;               
        } else {                
             ++x;               
        }       
    }
    return -1;  
}

int main (void) {

    int procurarpalavras (const struct dicionario lingua[], const char palavra[], const int numdepalavras);

    const int NUMERODEDEFINICOES = 7;
    char palavra[21] = {'%pre%'};
    int resultadopesquisa;
    int sair;

    const struct dicionario portugues[7] = {
    {"pao", "alimento a base de farinha"},
    {"mortadela", "tipo de carne"}, 
    {"feijao", "comida brasileira"},
    {"tropeiro", "tipo de feijao"},
    {"queijo", "de minas"},
    {"macarronada", "massa gostosa"},
    {"pizza", "tipico da italia"}};

    printf ("digite uma palavra: ");
    scanf ("%s", palavra);

    resultadopesquisa = procurarpalavras (portugues, palavra, NUMERODEDEFINICOES);

    if (resultadopesquisa != -1) {
        printf ("%s\n", portugues[resultadopesquisa].definicao);
    } else {
        printf ("\npalavra nao encontrada\n");
    }
    system ("pause");
    }
' && palavra2[x] !='%pre%') { ++x; } if (palavra1[x] == '%pre%' && palavra2[x] == '%pre%') { return true; } else { return false; } } int procurarpalavras (const struct dicionario lingua[], const char palavra[], const int numdepalavras) { bool compararpalavras (const char palavra1[], const char palavra2[]); int x = 0; while (x < numdepalavras) { if (compararpalavras(procurarpalavras, lingua[x].palavra)) { return x; } else { ++x; } } return -1; } int main (void) { int procurarpalavras (const struct dicionario lingua[], const char palavra[], const int numdepalavras); const int NUMERODEDEFINICOES = 7; char palavra[21] = {'%pre%'}; int resultadopesquisa; int sair; const struct dicionario portugues[7] = { {"pao", "alimento a base de farinha"}, {"mortadela", "tipo de carne"}, {"feijao", "comida brasileira"}, {"tropeiro", "tipo de feijao"}, {"queijo", "de minas"}, {"macarronada", "massa gostosa"}, {"pizza", "tipico da italia"}}; printf ("digite uma palavra: "); scanf ("%s", palavra); resultadopesquisa = procurarpalavras (portugues, palavra, NUMERODEDEFINICOES); if (resultadopesquisa != -1) { printf ("%s\n", portugues[resultadopesquisa].definicao); } else { printf ("\npalavra nao encontrada\n"); } system ("pause"); }
    
asked by anonymous 30.08.2014 / 15:52

2 answers

4

I believe it was just inattention.

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

struct dicionario {     
    char palavra[21];
    char definicao[51];     
};

bool compararpalavras (const char palavra1[], const char palavra2[]) {      
    int x = 0;      
    while (palavra1[x] == palavra2[x] && palavra1[x] != '
if (compararpalavras(procurarpalavras, lingua[x].palavra)) {
' && palavra2[x] !='
if (compararpalavras(palavra, lingua[x].palavra)) { 
') { ++x; } return palavra1[x] == '
#include <stdio.h>
#include <stdbool.h>

struct dicionario {     
    char palavra[21];
    char definicao[51];     
};

bool compararpalavras (const char palavra1[], const char palavra2[]) {      
    int x = 0;      
    while (palavra1[x] == palavra2[x] && palavra1[x] != '
if (compararpalavras(procurarpalavras, lingua[x].palavra)) {
' && palavra2[x] !='
if (compararpalavras(palavra, lingua[x].palavra)) { 
') { ++x; } return palavra1[x] == '%pre%' && palavra2[x] == '%pre%'; } int procurarpalavras (const struct dicionario lingua[], const char palavra[], const int numdepalavras) { bool compararpalavras (const char palavra1[], const char palavra2[]); int x = 0; while (x < numdepalavras) { if (compararpalavras(palavra, lingua[x].palavra)) { return x; } else { ++x; } } return -1; } int main (void) { int procurarpalavras(const struct dicionario lingua[], const char palavra[], const int numdepalavras); const int NUMERODEDEFINICOES = 7; char palavra[21] = {'%pre%'}; int resultadopesquisa; const struct dicionario portugues[7] = { {"pao", "alimento a base de farinha"}, {"mortadela", "tipo de carne"}, {"feijao", "comida brasileira"}, {"tropeiro", "tipo de feijao"}, {"queijo", "de minas"}, {"macarronada", "massa gostosa"}, {"pizza", "tipico da italia"}}; printf ("digite uma palavra: "); scanf ("%s", palavra); resultadopesquisa = procurarpalavras (portugues, palavra, NUMERODEDEFINICOES); if (resultadopesquisa != -1) { printf ("%s\n", portugues[resultadopesquisa].definicao); } else { printf ("\npalavra nao encontrada\n"); } }
' && palavra2[x] == '%pre%'; } int procurarpalavras (const struct dicionario lingua[], const char palavra[], const int numdepalavras) { bool compararpalavras (const char palavra1[], const char palavra2[]); int x = 0; while (x < numdepalavras) { if (compararpalavras(palavra, lingua[x].palavra)) { return x; } else { ++x; } } return -1; } int main (void) { int procurarpalavras(const struct dicionario lingua[], const char palavra[], const int numdepalavras); const int NUMERODEDEFINICOES = 7; char palavra[21] = {'%pre%'}; int resultadopesquisa; const struct dicionario portugues[7] = { {"pao", "alimento a base de farinha"}, {"mortadela", "tipo de carne"}, {"feijao", "comida brasileira"}, {"tropeiro", "tipo de feijao"}, {"queijo", "de minas"}, {"macarronada", "massa gostosa"}, {"pizza", "tipico da italia"}}; printf ("digite uma palavra: "); scanf ("%s", palavra); resultadopesquisa = procurarpalavras (portugues, palavra, NUMERODEDEFINICOES); if (resultadopesquisa != -1) { printf ("%s\n", portugues[resultadopesquisa].definicao); } else { printf ("\npalavra nao encontrada\n"); } }

See running on ideone . And No Coding Ground . Also put it on GitHub for future reference .

I changed the

%pre%

by

%pre%     
30.08.2014 / 16:55
0

Just change the line of code from:

if (compararpalavras(procurarpalavras, lingua[x].palavra))

To

if (compararpalavras( lingua[x].palavra, palavra))
    
30.08.2014 / 17:00