Partage
  • Partager sur Facebook
  • Partager sur Twitter

Arbre n-aire ajout de mot

Anonyme
    31 décembre 2018 à 16:33:23

    Bonjour a tous !

    Donc voila j'essaye encore et toujours de faire un dictionnaire a partir d'un arbre n-aire en java normalement il est fini mais les mots ne s'ajoute pas, j'ai fait une méthode d'affichage qui affiche un truc bizarre, si quelqu'un peut m'expliquer ce qui ne fonctionne pas merci beaucoup.

    voici le code :

    le fichier de test :

    public class Test_Dico {
     
        public static void main (String[] args){
             
            Lecture_Fichier Lec = new Lecture_Fichier("Lexique.txt");
            // test de reccup
            System.out.println("test de reccup : " + Lec.getChaine().get(22));
             
            Dico dico = new Dico();
             
            String trie = Trie(Lec.getChaine().get(22));
            System.out.println(trie);
             
            dico.Ajoute_Mot(new Fils(trie.charAt(0)), trie);
             
            trie = Trie(Lec.getChaine().get(34));
            System.out.println(trie);
            dico.Ajoute_Mot(new Fils(trie.charAt(0)), trie);
             
            dico.Afficher_Arbre(dico.GetFirst());
             
        }
         
        public static String Trie(String e){
             
            String ret = "";
            int i=0, j=0;
            while(i<1){
                if(e.charAt(j) == '$'){
                    i++;
                }else{
                    if(i>=0){
                        ret += e.charAt(j);
                    }
                }
                j++;
            }
             
            return ret;
        }
    }

    le dico avec les methodes d'ajout et d'affichage :

    public class Dico {
     
        /*** Attributs ***/
         
        Fils First;
         
        /*** Constructeurs ***/
         
        public Dico(){
            this.First = new Fils('$');
        }
         
        /*** Getters et Setters ***/
         
        public Fils GetFirst(){
            return this.First;
        }
         
        /*** Methodes ***/
         
        public void Ajoute_Mot(Fils f, String mot){
             
            /**
             * La methode ajoute mot ajoute un mot dans l'arbre grammatical de manière récursive
             * **/
            if(!mot.isEmpty()){
                if(f.Get_Fils().isEmpty()){
                    f.Get_Fils().add(new Fils(mot.charAt(0)));
                    String tmp = "";
                    for(int i=1;i<mot.length();i++){
                        tmp += mot.charAt(i);
                    }
                    Ajoute_Mot(f.Get_Fils().get(0),tmp);
                }else{
                    int j=0;
                    while((f.Get_Fils().get(j).Get_Name() != mot.charAt(0))&&(j<f.Get_Fils().size())){
                        if(f.Get_Fils().get(j).Get_Name() == mot.charAt(0)){
                            String tmp = "";
                            for(int i=1;i<mot.length();i++){
                                tmp += mot.charAt(i);
                            }
                            Ajoute_Mot(f.Get_Fils().get(j),tmp);
                        }
                        j++;
                    }
                    f.Get_Fils().add(new Fils(mot.charAt(0)));
                    String tmp = "";
                    for(int i=1;i<mot.length();i++){
                        tmp += mot.charAt(i);
                    }
                    Ajoute_Mot(f.Get_Fils().get(0),tmp);
                }
            }
        }
         
        public void Afficher_Arbre(Fils f){
             
            if(f.Get_Fils().isEmpty()){
                System.out.println(f.Get_Name() + ".");
            }else{
                for(int i=0;i<f.Get_Fils().size();i++){
                    System.out.print(f.Get_Name());
                    Afficher_Arbre(f.Get_Fils().get(i));
                }
            }
        }
    }

    et enfin le fichier qui contient les Fils :

    import java.util.ArrayList;
     
    public class Fils {
     
        /*** Attributs ***/
         
        char name;
        ArrayList<Fils> fils;
         
        /*** Constructeurs ***/
         
        public Fils(char name){
            this.name = name;
            fils = new ArrayList<Fils>();
        }
         
        /*** Getters et Setters ***/
         
        public char Get_Name(){
            return this.name;
        }
         
        public ArrayList<Fils> Get_Fils(){
            return this.fils;
        }
        /*** Methodes ***/
         
        public boolean Rechercher_Lettre(char e){
             
            if(this.fils.size() == 0){
                return false;
            }else{
                for(int i=0;i<this.fils.size();i++){
                    if(this.fils.get(i).Get_Name() == (e)){
                        return true;
                    }
                }
                return false;
            }
        }
         
        public void Ajout_Lettre(char e){
            this.fils.add(new Fils(e));
        }
    }





    • Partager sur Facebook
    • Partager sur Twitter
      3 janvier 2019 à 17:11:05

      Tu veux faire un arbre lexicographique en fait ?

      dictionnaire a partir d'un arbre n-aire 

      un arbre n-aire est un dictionnaire

      -
      Edité par Golgoo 3 janvier 2019 à 17:12:41

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        18 janvier 2019 à 21:36:50

        oui c'est exactement ca ! mais comme tu peut le voir ca ne fonctionne pas a cause de la fonction d'ajout de mot principalement.
        • Partager sur Facebook
        • Partager sur Twitter

        Arbre n-aire ajout de mot

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown