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 :

Problème avec les arbres [Débutant(e)]


Sujet :

C

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    422
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 422
    Points : 113
    Points
    113
    Par défaut Problème avec les arbres
    Slt je viens de commencer les arbres binaires et j’ai déjà un problème au niveau de la « saisie » de l’arbre .J’ai écrit cette fct récursive pour la saisie mais ça coince lors de l’affichage. Si j’ai un arbre avec 1 comme racine , 2 comme feuille gauches et 3 comme feuille droite ça affiche 12 et puis n’importe quoi !

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    typedef struct noeud
    {
    	int val;
    	struct noeud* fg;
    	struct noeud* fd;
    }noeud;
     
    typedef noeud* arbre ;
     
    void saisir_noeud(arbre *a)
    {
    	noeud *fils1,*fils2;
    	int gauche,droite;
    	fils1=(noeud*)malloc(sizeof(*fils1));
    	fils2=(noeud*)malloc(sizeof(*fils2));
     
    	(*a)->fg=fils1;
    	(*a)->fd=fils2;
    	printf("donner le fils gauche de %d:",(*a)->val);
    	scanf("%d",&gauche);
    	printf("donner le fils droit de %d:",(*a)->val);
    	scanf("%d",&droite);
     
    	if (gauche!=0)
    	{
     
    		(*a)->fg->val=gauche;
     
    		saisir_noeud(&(*a)->fg);
     
    	}
    	if (droite!=0)
    	{
     
    		(*a)->fd->val=droite;
     
    		saisir_noeud(&(*a)->fd);
    	}
     
    }
     
    void affichage_post(arbre a)
    {
     
    	if (a!=NULL)
    	{
    		printf("%d",a->val); //le debug m’indique que ça coince ici
     
    		affichage_post(a->fg);
    		affichage_post(a->fd);
    	}
    }
    Merci.

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    1. Déjà, il est préfixe, ton affichage, pas postfixe...
    2. On ne caste pas le retour de malloc().
    3. Tu ne devrais pas cacher le pointeur dans ton typedef, cela te causeras plus d'ennuis que de facilités.
    4. Tu devrais initialiser les pointeurs fg et fd à NULL juste après le malloc().
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    422
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 422
    Points : 113
    Points
    113
    Par défaut
    1->
    2->je suis entrain de travailler en .cpp pas en c je sais que c'est pas tres correct mais le prof insiste sur ce point pour une raison qui m'echappe
    3->le prof ne veut pas faire autrement
    4->ok je vais essayer et vous faire signe en cas de pepin

  4. #4
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    422
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 422
    Points : 113
    Points
    113
    Par défaut
    je viens d'initialiser les fg et fd a null mais ça ne fonctionne pas .

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    vu le commentaire dans le code "ça coince ici" (commentaire style C++ que je banierais de ce forum) je pense que le problème vient du paramètre lors du premier appel à "affichage_arbre".
    Or, cet appel n'est pas donné dans le code présenté ...
    Désolé, pas de réponse plus précise dans l'état actuel.

  6. #6
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    422
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 422
    Points : 113
    Points
    113
    Par défaut
    Slt j’ai resolu le probleme tout seul comme un grand il fallait juste deplacer (*a)->fg=fils1; dans la condtion gauche!=0 et de meme pour (*a)->fd=fils2. Si vous avez des remarques pour ameliorer le code je suis preneur .
    Merci

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    À part demander à ton prof de s'expliquer sur sa lubie du .cpp, je ne vois pas trop.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Arbre de decision] Problème avec les noeuds
    Par hollowdeadoss dans le forum R
    Réponses: 2
    Dernier message: 11/03/2013, 11h33
  2. Problème avec les arbres
    Par madjidri dans le forum C
    Réponses: 2
    Dernier message: 06/12/2007, 01h09
  3. Problèmes de pointeurs avec les arbres
    Par thierry57 dans le forum C
    Réponses: 17
    Dernier message: 22/12/2005, 23h35
  4. Problème avec les fichiers .JPG
    Par cprogil dans le forum Langage
    Réponses: 5
    Dernier message: 10/06/2003, 15h44
  5. []Problème avec les formulaires Outlook
    Par davidinfo dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 09h59

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