Bonjour a tous !
je sort d'une petite pause de programmation et je décide de me remettre a un ancien projet que je voulais faire, pour reprendre mes repères je reprend depuis le début heureusement j'avais quasiment pas commencer :
Donc voila le but est de faire un dictionnaire avec un arbre n-aire qui prend une case en plus a la fin du mot qui contiendrai plusieurs données sur celui ci tel que si le mot est féminin plurielle sont nombre d'occurrence ca prononciation phonétique etc ... (La dernière partie n'est pas encore en cours d'implémentation donc vous ne la trouverai pas)
J'ai commencer l'arbre est je pense avoir réussi après 2 semaines a faire un fonction d'ajout de mot qui n'est pas trop mal l'ennui c'est que j'ai beaucoup de mal avec la récursivité, je comprend plutot bien le principe mais quand il sagit de le codé c'est la page blanche quand a me représent dans la tête le parcours du code au deuxième appel c'est la fin du monde x).
Donc me voici je recherche principalement a avoir une fonction d'affichage de l'arbre qui fonctionne sans problème pour résoudre ensuite les autres problème moi même. mais si vous avez des remarque sur le code hésitez pas ...
Fichier test :
Le fichier dico : celui qui gère l'ensemble du dico ansi que ces fonctionnalités
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 public class Test_Dico { public static void main (String[] args){ Lecture_Fichier Lec = new Lecture_Fichier("Lexique.txt"); System.out.println(Lec.getChaine().get(7)); String trie = Trie(Lec.getChaine().get(22)); System.out.println(trie); Dico dico = new Dico(); dico.Ajoute_Mot(new Fils(trie.charAt(0)), trie); trie = Trie(Lec.getChaine().get(34)); dico.Ajoute_Mot(new Fils(trie.charAt(0)), trie); System.out.println("fini"); } 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 fichier Fils qui représente le noeud de l'arbre:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 import java.util.ArrayList; public class Dico { /*** Attributs ***/ Fils First; /*** Constructeurs ***/ public Dico(){ this.First = new Fils('$'); } /*** Getters et Setters ***/ /*** 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); } } } }
Je ne met pas les fichier Lecture_fichier et Ecriture_Fichier d'une part parce que je suis sur de leur programmation et d'autre pas car n'a aucune relation avec le projet en cours néanmoins si certaine personne veulent voir demandez .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 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)); } }
Merci d'avance d'éclairer mon cerveau embrumé ....
Partager