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


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    239
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 239
    Par défaut Problème avec les arbres
    j'ai crée un programme qui fait créer un arbre, puis le remplir puis l'affichir mais malheuresent ça fonctionne pas, 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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
     
    typedef struct arbre
    {
    	int val;
    	struct arbre *g, *d;
    }arbre;
     
    arbre *insere(arbre *a, int k){
    	  if(a==NULL){
    		a=(arbre*)malloc(sizeof(arbre));
    		a->d=NULL;
    		a->g=NULL;
    		a->val=k;
    	}
    	else{
    		if(k<a->val) a->g=insere(a->g, k);
    		a->d=insere(a->d,k);
    	}
    	return a;
    }
     
    void afficher (arbre *a){
    	if(a==NULL) printf("il y a rien a afficher");
    	if(a!=NULL)
    		afficher (a->g);
    	printf("%d(",a->val);
    	if(a->g==NULL) printf("-");
    	else printf("%d",a->g->val);
    	if(a->d==NULL) printf(")\n");
    	else printf("%d)\n",a->d->val);
    	afficher (a->d);	    
    }
     
     
     
    int main(){
    	arbre *T=NULL;
     
    	T=insere(T,10);
    	T=insere(T,20);
    	T=insere(T,3);
    	T=insere(T,7);
    	T=insere(T,60);
    	T=insere(T,44);
    	T=insere(T,5);
    	afficher(T);
    	getch();
    	return (0);
    }
    le programme puis se plante, merci pour votre aide.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 121
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    arbre *insere(arbre *a, int k){
                  
    	  if(a==NULL){
    		a=(arbre*)malloc(sizeof(arbre));
    		a->d=NULL;
    		a->g=NULL;
    		a->val=k;
    	}
    	else{
    		if(k<a->val) a->g=insere(a->g, k);
    		else a->d=insere(a->d,k);
    	}
    	return a;
    }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 18
    Par défaut
    Je comprends pourquoi mon prof me répétait de bien indenter, mettre des noms de variables explicites, ...

    ça doit être chaud de lire tes codes, j'ai modifié un peu les noms, les types etc...

    ça fonctionne, essaye, si tu n'as pas dev C++, enlève le system pause à la fin.

    Comme affichage, j'avais pas trop envie de me prendre la tête avec le parcours en largeur, donc c'est un parcours préfixe de base, parcours de premier passage si tu préfères.

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
     
     
    typedef struct arbre *ptr_arbre;
     
    typedef struct arbre
    {
    	int val;
    	ptr_arbre fg;
        ptr_arbre fd;
    }arbre;
     
    typedef  ptr_arbre t_ptr_arbre ;
     
    t_ptr_arbre nvArbre(int val, t_ptr_arbre fg, t_ptr_arbre fd)
    {
          t_ptr_arbre temp_arbre;
     
    	  temp_arbre=(ptr_arbre)malloc(sizeof(arbre));
     
    	  temp_arbre->val=val;
    	  temp_arbre->fg=fg;
    	  temp_arbre->fd=fd;
     
    	  return temp_arbre;
    }
     
     
    void affichage_prefixe(t_ptr_arbre a) // parcours de premier passage (par exemple)
    {
     
         if(a!=NULL)
         {
                    printf("%d - ", a->val);
                    affichage_prefixe(a->fg);
                    affichage_prefixe(a->fd);
         }
    }     
     
     
    int main(){
     
     
        t_ptr_arbre arbre,b,c,d,e,f,g;
     
     
     
        f=nvArbre(2,NULL,NULL);
        g=nvArbre(9,NULL,NULL);
     
       	d=nvArbre(3,NULL,NULL);
    	e=nvArbre(7,NULL,NULL);
     
    	b=nvArbre(8,d,e);
    	c=nvArbre(21,f,g);
     
    	arbre=nvArbre(5,b,c);
     
     
         affichage_prefixe(arbre);
     
     
    	system("PAUSE");
    	return (0);
    }
    Bon mon code n'est pas très bien présenté également, mais il est une heure du mat, le but était de faire en sorte que ça marche.

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 isoman dans le forum C
    Réponses: 6
    Dernier message: 23/02/2007, 18h51
  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 Invité 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