à tous les vrai programmeurs

zargoss Messages postés 78 Statut Membre -  
byakhlefncr Messages postés 260 Statut Membre -
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................................
Configuration: Windows XP
Firefox 2.0.0.14

5 réponses

  1. dj-postka Messages postés 2409 Statut Membre 305
     
    je ne suis pas programeur mais le binaire ce n'est pas que des 0 et des 1???
    0
    1. zargoss Messages postés 78 Statut Membre 3
       
      je veux enregistrer cette arbre dans un fichier text .txt pas binaire
      0
      1. dj-postka Messages postés 2409 Statut Membre 305 > zargoss Messages postés 78 Statut Membre
         
        a ok dsl je n'y connai pratiquement rien voir rien du tt en programation
        0
      2. zargoss Messages postés 78 Statut Membre 3 > dj-postka Messages postés 2409 Statut Membre
         
        il ya pas des programmeurs ou quoi???
        0
  2. zargoss Messages postés 78 Statut Membre 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
  3. byakhlefncr Messages postés 260 Statut Membre 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
    1. zargoss Messages postés 78 Statut Membre 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
  4. byakhlefncr Messages postés 260 Statut Membre 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
    1. zargoss Messages postés 78 Statut Membre 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
      1. zargoss Messages postés 78 Statut Membre 3 > zargoss Messages postés 78 Statut Membre
         
        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
      2. zargoss Messages postés 78 Statut Membre 3 > zargoss Messages postés 78 Statut Membre
         
        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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. byakhlefncr Messages postés 260 Statut Membre 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