à 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 -
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................................
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
je ne suis pas programeur mais le binaire ce n'est pas que des 0 et des 1???
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
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
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???
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
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
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::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)
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)
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?
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?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
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