Probleme en c++

wassimovic -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

j'ai une probleme du comprendre exercice:

question::develloper class abr qui permet de trier un fichier de mots a travers un arbre binaire de recherche ,le fichier contient du mots de taiile diffrents

1 réponse

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    L'énoncé ne veut pas dire grand chose.

    - Que signifie "trier" (dans quel ordre) ?
    - Comment est formé le fichier (un mot par ligne, y a t'il de la ponctuation etc...) ?

    Une manière de faire est de lire le fichier ligne par ligne (par exemple avec std::getline) et de récupérer les mots un par un (par exemple avec std::strtok) :
    http://www.cplusplus.com/reference/cstring/strtok/
    http://www.cplusplus.com/reference/string/string/getline/

    Ensuite en temps normal on utiliserait simplement un std::set<std::string> pour stocker tous les mots qui utilise par défaut la relation d'ordre std::less<std::string> (ie l'ordre lexicographique).
    http://www.cplusplus.com/reference/set/set/

    En interne, un std::set repose sur un arbre rouge noir qui est effectivement un arbre binaire (j'imagine que c'est le but de l'exercice) :
    https://fr.wikipedia.org/wiki/Arbre_bicolore

    Il suffit en ensuite d'itérer sur cet arbre pour écrire les mots dans le bon ordre.

    Exemple :

    #include <set>
    #include <string>
    #include <iostream>
    
    int main() {
        typedef std::set<std::string> words_t;
        words_t words;
        words.insert("coucou");
        words.insert("bonjour");
        words.insert("hello");
        words.insert("bonjour");
    
        for(words_t::const_iterator word_it = words.begin(); word_it != words.end(); ++word_it) {
            std::cout << *word_it << std::endl;
        }
        return 0;
    }


    ... ce qui donne à l'exécution :

    bonjour
    coucou
    hello


    J'imagine que le but de ton exercice consiste plus ou moins à recoder l'équivalent d'un std::set<std::string>...

    Bonne chance
    0