Problema con strcmp e strutture

di il
2 risposte

Problema con strcmp e strutture

Buonasera a tutti, ho riscontrato un problema con il seguente esercizio: dato un dizionario progettare un algoritmo di ricerca binaria ricorsiva che data una chiave la trovi all'interno del vocabolario.

Le strutture usate sono le seguenti:

struct TERMINE{
    char nome[20];
    char significato[500];
    char sinonimo[5][20];
};
typedef struct TERMINE termine;

struct PAROLE{
    termine vocabolo[5];
}alfabeto[21];
typedef struct PAROLE parole;
poiché il dizionario deve contenere al massimo 5 parole per ogni lettera dell'alfabeto, e in più ogni parola deve contenere il significato e al massimo 5 sinonimi, ho dichiarato due strutture: la struct TERMINE contiene le parole in ordine alfabetico (termini con la A, termini con la B...) e la struct PAROLE contiene le 21 lettere dell'alfabeto italiano.

Il problema sopraggiunge al momento della ricerca. Ho separato la ricerca in due sottoprogrammi in cui il primo trova la prima lettera dell'alfabeto corrispondente alla chiave (e fin qui tutto bene)

int ricercaLet(int inizio, int fine, char chiave){
    int medio;
    if (inizio > fine)
        printf("Non e' stata inserita una parola corretta.\n");

    medio = (inizio + fine) / 2;

    if (alfabeto[medio].vocabolo[0].nome[0] == chiave)
        return medio;
    else
        if (alfabeto[medio].vocabolo[0].nome[0] > chiave)
            ricercaLet(inizio, medio - 1, chiave);
        else
            ricercaLet(medio + 1, fine, chiave);
}
e il secondo trova il termine, una volta identificata la prima lettera della parola

int ricercaPar(int inizio, int fine, char *chiave, int lettera){
    int medio;
    if (inizio > fine)
        printf("Parola non trovata.\n");

    medio = (inizio + fine) / 2;

    if (strcmp(alfabeto[lettera].vocabolo[medio].nome,chiave) == 0)
        return medio;
    else
        if (strcmp(alfabeto[lettera].vocabolo[medio].nome,chiave) > 0)
            ricercaPar(inizio, medio - 1, chiave, lettera);
        else
            ricercaPar(medio + 1, fine, chiave, lettera);
}
a questo punto il programma va in crisi e credo che io abbia sbagliato qualcosa con i puntatori... qualcuno potrebbe aiutarmi?

Grazie a tutti in anticipo!

2 Risposte

  • Re: Problema con strcmp e strutture

    Sapphy ha scritto:


    dato un dizionario progettare un algoritmo di ricerca binaria ricorsiva che data una chiave la trovi all'interno del vocabolario.
    "che data una chiave la trovi"? Puoi esprimerlo in un'altra lingua, magari così si capisce cosa vuoi...
  • Re: Problema con strcmp e strutture

    jj2007 ha scritto:


    Sapphy ha scritto:


    dato un dizionario progettare un algoritmo di ricerca binaria ricorsiva che data una chiave la trovi all'interno del vocabolario.
    "che data una chiave la trovi"? Puoi esprimerlo in un'altra lingua, magari così si capisce cosa vuoi...
    Data una chiave, trovi il termine (nome) all'interno del dizionario.
Devi accedere o registrarti per scrivere nel forum
2 risposte