à tous les vrai programmeurs

Fermé
zargoss Messages postés 78 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 14 juin 2008 - 15 mai 2008 à 00:42
byakhlefncr Messages postés 260 Date d'inscription vendredi 1 juillet 2005 Statut Membre Dernière intervention 11 septembre 2008 - 15 mai 2008 à 03:14
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 2305 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 11 février 2019 302
15 mai 2008 à 00:44
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 mercredi 12 décembre 2007 Statut Membre Dernière intervention 14 juin 2008 3
15 mai 2008 à 00:46
je veux enregistrer cette arbre dans un fichier text .txt pas binaire
0
dj-postka Messages postés 2305 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 11 février 2019 302 > zargoss Messages postés 78 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 14 juin 2008
15 mai 2008 à 00:53
a ok dsl je n'y connai pratiquement rien voir rien du tt en programation
0
zargoss Messages postés 78 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 14 juin 2008 3 > dj-postka Messages postés 2305 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 11 février 2019
15 mai 2008 à 01:03
il ya pas des programmeurs ou quoi???
0
zargoss Messages postés 78 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 14 juin 2008 3
15 mai 2008 à 00:44
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 vendredi 1 juillet 2005 Statut Membre Dernière intervention 11 septembre 2008 63
15 mai 2008 à 01:35
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 mercredi 12 décembre 2007 Statut Membre Dernière intervention 14 juin 2008 3
15 mai 2008 à 02:11
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 vendredi 1 juillet 2005 Statut Membre Dernière intervention 11 septembre 2008 63
15 mai 2008 à 02:19
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 mercredi 12 décembre 2007 Statut Membre Dernière intervention 14 juin 2008 3
15 mai 2008 à 02:35
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 mercredi 12 décembre 2007 Statut Membre Dernière intervention 14 juin 2008 3 > zargoss Messages postés 78 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 14 juin 2008
15 mai 2008 à 02:40
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 mercredi 12 décembre 2007 Statut Membre Dernière intervention 14 juin 2008 3 > zargoss Messages postés 78 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 14 juin 2008
15 mai 2008 à 02:44
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 vendredi 1 juillet 2005 Statut Membre Dernière intervention 11 septembre 2008 63
15 mai 2008 à 03:14
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