IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

arbre en C, successeurs et fils


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Décembre 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 8
    Par défaut arbre en C, successeurs et fils
    bonjour
    je travaille avec un arbre ,je crée ses successeurs et je veux le parcourir pour afficher le 1 er successeur de chaque noeud, voici le code:

    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
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
      struct Arbre
      { char chaine[4];
         struct Arbre *child[4];
        };
       struct Arbre successeurs(struct Arbre arbre);
       void parcours(struct Arbre arbre);
       int main()
    { 
        struct Arbre arbre;
      printf("\n entere 4 lettres \n");
       gets(arbre.chaine); puts(arbre.chaine); printf("\n"); 
        arbre=successeurs(arbre); puts(arbre.chaine); printf("\n");
        parcours(arbre);
        system("pause");
        }
     
    struct Arbre successeurs(struct Arbre arbre)
    {  char aide;  
       aide=arbre.chaine[0]; arbre.chaine[0]=arbre.chaine[1];  arbre.chaine[1]=aide;  
        arbre.child[0]->chaine;
       aide=arbre.chaine[1]; arbre.chaine[1]=arbre.chaine[2];  arbre.chaine[2]=aide;
       arbre.child[1]->chaine;
       aide=arbre.chaine[2]; arbre.chaine[2]=arbre.chaine[3];  arbre.chaine[3]=aide;
       arbre.child[2]->chaine;      
        return arbre;
    }
    void parcours(struct Arbre arbre)
    { while(!arbre.chaine)
          {  printf("\n");
            successeurs(arbre); arbre.child[0]->chaine;  
             puts(arbre.chaine); 
            }
    }
    svp je veux un aide pour manipuler les pointeurs dans la fct de parcours, merci d'avance

  2. #2
    Membre émérite
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Par défaut
    Tu pourrais être un peu plus précis stp
    Quel est ton problème ?
    Que veut-tu exactement ?

    Quant à la lisibilité de ton code je pense que tu peux améliorer comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    struct Arbre{char chaine[4];struct Arbre *child[4];};
    struct Arbre successeurs(struct Arbre arbre);
    void parcours(struct Arbre arbre);
    int main(){struct Arbre arbre;printf("\n entere 4 lettres \n");gets(arbre.chaine); puts(arbre.chaine); printf("\n");arbre=successeurs(arbre); puts(arbre.chaine); printf("\n");parcours(arbre);system("pause");}
    struct Arbre successeurs(struct Arbre arbre){char aide;aide=arbre.chaine[0]; arbre.chaine[0]=arbre.chaine[1];  arbre.chaine[1]=aide;arbre.child[0]->chaine;aide=arbre.chaine[1]; arbre.chaine[1]=arbre.chaine[2];  arbre.chaine[2]=aide;arbre.child[1]->chaine;aide=arbre.chaine[2]; arbre.chaine[2]=arbre.chaine[3];  arbre.chaine[3]=aide;arbre.child[2]->chaine;return arbre;}
    void parcours(struct Arbre arbre){while(!arbre.chaine){printf("\n");successeurs(arbre); arbre.child[0]->chaine;puts(arbre.chaine);}}

  3. #3
    Membre habitué
    Inscrit en
    Décembre 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 8
    Par défaut
    BONJOUR

    dans mon code ci dessus, je veux demander à l'utilisateur d'entrer une chaine de 4 lettres, je permute les lettres pour générer d'autres 3 mots(3 successeurs ) , ensuite j'utlilise des algorithmes ( DFS ,BFS ..) pour afficher la chaine entrée et les successeurs jusqu'à arriver à une chaine final, pour le moment j'ai commencé avec DFS, cé pourquoi que je veux afficher seulement les 1 permièrs successeurs , chauqe chaine successeure généré va devenir une chaine courante qui va générer ses propres successeurs et ainsi de suite,
    j'espère que vous me donnez une idée sur comment faire ça
    MERCI

  4. #4
    Membre habitué
    Inscrit en
    Décembre 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 8
    Par défaut ajout 4 fils a un arbre
    bonjour
    j'ai modifié mon code précédent: j'utilise mnt la structure suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    typedef struct node *Arbre;
    typedef struct node{
           char chaine[4];
           struct node *pere;
           struct node *child[4];
       };
    mon pb est au niveau d'ajout 4 noeud à la fois à mon arbre,(chaque noeud a 4 child)
    voici le code de la fonction d'ajout:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Arbre *ajouter_node_arbre(Arbre *p_arbre,char chaine[4][4])
    {    int i,j;
     
       struct node *new_node[4]=(struct node*)malloc(4*sizeof(struct node)); 
     
      for(i=0;i<4;i++)
         {strcpy(new_node[i]->chaine,chaine[i]); 
          new_node[i]->pere=p_arbre;  //  erreur(1     
          for(j=0;j<4;j++)  {  new_node[i]->child[j]=NULL; }
            p_arbre->child[i]=new_node[i];   erreur   (2)    
        return p_arbre; }
    il génére ces erreurs de: (1) assignement for incompatible pointer type
    (2)request for member 'child' in something not a structure or union ,
    je serai recinnaissante si vous me corrigez le pb, merci

  5. #5
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       struct node *new_node[4]=(struct node*)malloc(4*sizeof(struct node));
    On n'a pas le droit d'écrire ceci : new_node est déclaré comme un tableau de 4 pointeurs sur struct node (on ne peut pas écrire tableau = quelque chose)et non pas comme un pointeur sur un tableau de 4 struct node.

    PS : fais un effort sur la présentation de ton code.

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/04/2010, 16h17
  2. Arbre : 1 fils, plusieurs père?
    Par -={-_-}=- dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 05/12/2009, 15h02
  3. Questions diverses sur les Arbres binaires + insertion d'un fils
    Par beegees dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 18/03/2008, 01h21
  4. Evenement sur les fils d'un arbre
    Par f.lam dans le forum WinDev
    Réponses: 4
    Dernier message: 04/04/2007, 17h26
  5. [C#]Comment avoir les fils d un noeud dans 1 arbre
    Par wodel dans le forum Windows Forms
    Réponses: 6
    Dernier message: 03/04/2006, 13h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo