à tous les vrai programmeurs

zargoss Messages postés 78 Date d'inscription   Statut Membre Dernière intervention   -  
byakhlefncr Messages postés 260 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
je cherche un programmeur en langage c qui sais comment enregistrer un arbre binaire de recherche dans un fichier .txt
(enregistrer le contenu des noeuds de cet arbre)
donc quand on ouvre le fichier.txt en trouve cela par exemple:
12 -1 -1
3 2 6
45 60 20
......
CE QUI EST A GAUCHE C LA VALEUR DU NŒUD ET CE QUI EST AU MILIEU C LA GAUCHE ET CE QUI EST A DROITE C LA DROITE DU NŒUD................................

5 réponses

dj-postka Messages postés 2321 Date d'inscription   Statut Membre Dernière intervention   302
 
je ne suis pas programeur mais le binaire ce n'est pas que des 0 et des 1???
0
zargoss Messages postés 78 Date d'inscription   Statut Membre Dernière intervention   3
 
je veux enregistrer cette arbre dans un fichier text .txt pas binaire
0
dj-postka Messages postés 2321 Date d'inscription   Statut Membre Dernière intervention   302 > zargoss Messages postés 78 Date d'inscription   Statut Membre Dernière intervention  
 
a ok dsl je n'y connai pratiquement rien voir rien du tt en programation
0
zargoss Messages postés 78 Date d'inscription   Statut Membre Dernière intervention   3 > dj-postka Messages postés 2321 Date d'inscription   Statut Membre Dernière intervention  
 
il ya pas des programmeurs ou quoi???
0
zargoss Messages postés 78 Date d'inscription   Statut Membre Dernière intervention   3
 
voila j'ai tenté de faire cela mais donne rien

arbre* enregistrer(arbre *a) {
arbre*valeur;
FILE*fichier = NULL;
fichier=fopen("C:\tp_c\test","r+");
if(!estVide(a))
prefixe(a);
ecritureFichier(a);
}


qq un peu me dire comment adapter cela pour qu'il fonctionne
0
byakhlefncr Messages postés 260 Date d'inscription   Statut Membre Dernière intervention   63
 
Salut,

je nevois pas l'interrêt de faire une sauvegarde de cette façon? peut être peux
tu m'expliquer un plus.

Valeur-Gauche-Droite

comment vas tu récupérer l'arbre à partir du fichier pour qu'il retrouve son état initiale?

voici ma sugestion :
                                                        R0
                                                         |
                                        R1-------------------------------R7
                                         |                               |
                           R2-----------------------R6    R8----------------------R11
                           |                              |
                  R3 ----------- R4              R9--------------R10
                                 |
                           R5-----

R0::Valeur
R1:R0:Valeur Gauche de R0
R2:R1:Valeur Gauche de R1
R3:R2:Valeur Gauche de R2
R4:R2:Valeur Droite de R2
R5:R4:Valeur Gauche de R4
R6:R1:Valeur Droite de R1
R7:R0:Valeur Droite de R0
R8:R7:Valeur Gauche de R7
R9:R8:Valeur Gauche de R8
R10:R8:Valeur Droite de R8
R11:R7:Valeur Droite de R7

Donc c'est sous forme : <Numero>:<Numero Parent>:<Valeur>

de cette façon on peut récupérer l'arbre dans son état initial
(avant l'enregistrement dans un fichier)
0
zargoss Messages postés 78 Date d'inscription   Statut Membre Dernière intervention   3
 
ce que je veux c'est enregistrer les valeurs des noeuds dans fichier texte comme ca

12 -1 -1
4 7 3
5 -1 -1
.....




les -1 indique que le noeuds na pas de fils
et on a
valeur du noeud gauche droite
0
byakhlefncr Messages postés 260 Date d'inscription   Statut Membre Dernière intervention   63
 
si 12 n'a pas de fils alors
4 7 3
5 -1 -1
que représentent-ils?

peux tu faire un schéma des valeurs de ton exemple pour représenter l'arbre parce que je n'ai pas bien suivi?
0
zargoss Messages postés 78 Date d'inscription   Statut Membre Dernière intervention   3
 
DSL pour le 12 je n'ai voulu ecrire q'un exemple
voila ce que je veu dire

12 10 18
10 5 11
18 17 20
5 -1 -1
11 -1 -1
17 -1 -1
20 -1 -1

voila ce que je veux dire
0
zargoss Messages postés 78 Date d'inscription   Statut Membre Dernière intervention   3 > zargoss Messages postés 78 Date d'inscription   Statut Membre Dernière intervention  
 
voila le shema de cet arbre binaire de recherche



12
I
I-----------I
10 18
I I
I---------------I I
5 11 I
I
I-------------I
17 20


VOILA j'esspere que c'est cmprehensible
0
zargoss Messages postés 78 Date d'inscription   Statut Membre Dernière intervention   3 > zargoss Messages postés 78 Date d'inscription   Statut Membre Dernière intervention  
 
lol il est par ecri correctement bon voila ceci je pense est sufisant
12 10 18
10 5 11
18 17 20
5 -1 -1
11 -1 -1
17 -1 -1
20 -1 -1
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
byakhlefncr Messages postés 260 Date d'inscription   Statut Membre Dernière intervention   63
 
il faut utiliser la récursivité comme pour parcourir l'arbre

Excuses-moi, je vais écrire un algorithme et non en C car ça fait des lustre que je n'utilise plus et je ne l'ai même pas sur ma machine.

Fonction EnregistreNoeud(A : pointeur, f : Fichier)
    Buffer = 'Valeur de A'
    si 'Gauche de A' != null alors
       Buffer=Buffer + ' ' + 'Valeur Gauche de A' 
    sinon
       Buffer=Buffer + ' -1' 
    Fin si
    si 'Droite De A' != null alors
       Buffer=Buffer + ' ' + 'Valeur Droite de A' 
    sinon
       Buffer=Buffer + ' -1' 
    Fin si
    EcrireDansFichier(f, Buffer)                               
    EnregistreNoeud('Gauche de A')
    EnregistrerNoeud('Droite de A')
Fin Fonction

Fonction EnregistrerArbre(RacineArbre : pointeur);
   OuvrirFichier(f, 'c:\Test.txt')                             
   EnregistreNoeud(RacineArbre)
   FermerFichier(f)
Fin Fonction
0