Labo 01 - recherche dichotomique

Aller en bas

Labo 01 - recherche dichotomique

Message  Geroc le Jeu 29 Jan - 21:19

Salut, j'ai fini mon labo et il fonctionne sans problèmes mais j'ai tout de même quelques difficultés à comprendre ce que fait réellement ma fonction. Tout tourne autour de ce que que fait strcmp: renvoyer 0, 1 ou -1. Mais la ou je ne comprend plus c'est quand on rappel la fonction en donnant des valeurs différentes pour la balise supérieur et pour l'inférieur.

Je ne comprend pas bien ce qui se passe au niveau des calculs ... ne sort il jamais de la liste pour trouver la balise du milieu?

Voici mon code
Code:

int recherche(char * nom, struct Fiche_Etudiant * petud, int inf, int sup)
{
    if (petud[0].nom==0 || sup < inf)
    {
        printf("\n L'%ctudiant n'est pas dans la liste!", 130);
        return -1;
    }

    else
    {
        int mil= (sup+inf)/2;
        int cmp = strcmp(nom, petud[mil].nom);

        if (cmp ==0)
        {
            system("CLS");
            printf("\n Nom                  Prenom              Pourcentage \n");
            printf("\n %-20s %-20s %2.1f %%", petud[mil].nom, petud[mil].prenom, petud[mil].pourcentage);
        }

        else if (cmp<0)
        {
            return recherche(nom, petud, inf, mil-1);
        }

        else
        {
            return recherche(nom, petud, mil+1, sup);         
        }
    }
}


/!\ Je viens en fait de comprendre le principe en refaissant mes calculs, désolé!

Geroc

Messages : 29
Date d'inscription : 02/10/2008
Age : 31
Localisation : Liers

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Labo 1 : recherche dichtomique

Message  Tounou le Dim 1 Fév - 19:34

Juste pour te répondre pour pas te prendre un vide.... tongue
Merci d'avoir poster ton code Very Happy
avatar
Tounou

Messages : 14
Date d'inscription : 07/10/2008
Age : 29
Localisation : Jupille

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum