Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1063 connectés 

  FORUM HardWare.fr
  Programmation
  C

  ??tableau et arbre??

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

??tableau et arbre??

n°997097
jans
Posté le 01-03-2005 à 14:04:55  profilanswer
 

en fait j'essaye de ranger les variables d'un tableau dans un arbre mais j'ai toujours un message comme quoi c'est incompatible!!
mon tableau est de la forme:
struct tableau      
{              
char a;          
float b;            
};  
struct tableau tab[100];
 
faut-il que je le déclare quelque chose en plus pour pouvoir ranger les valeurs de mon tableau dans les noeuds de l'arbre??
merci

mood
Publicité
Posté le 01-03-2005 à 14:04:55  profilanswer
 

n°997098
skeye
Posté le 01-03-2005 à 14:06:24  profilanswer
 

Surtout ne nous donne aucune info sur ton 'arbre' et la manière que tu as d'insérer tes éléments, et encore moins le message d'erreur exact, hein...:o


---------------
Can't buy what I want because it's free -
n°997112
Sve@r
Posté le 01-03-2005 à 14:13:50  profilanswer
 

jans a écrit :

en fait j'essaye de ranger les variables d'un tableau dans un arbre mais j'ai toujours un message comme quoi c'est incompatible!!
mon tableau est de la forme:
struct tableau      
{              
char a;          
float b;            
};  
struct tableau tab[100];
 
faut-il que je le déclare quelque chose en plus pour pouvoir ranger les valeurs de mon tableau dans les noeuds de l'arbre??
merci


 
Oui, faut que tu déclares ta structure de noeud de l'arbre et, éventuellement, ta structure d'arbre (si tu veux gérer plusieurs arbres à la fois)
 
Ce pourrait être par exemple

Code :
  1. typedef struct s_noeud {
  2.     struct tableau info;
  3.     struct s_noeud *gauche;
  4.     struct s_noeud *droite;
  5. } t_noeud;
  6. typedef struct {
  7.     t_noeud *racine;
  8. } t_arbre;


 
Ensuite...
 


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°997185
jans
Posté le 01-03-2005 à 14:47:34  profilanswer
 

moi j'ai fait:
typedef struct arbre
{
 float b;
 char a;
 struct tableau tab[100];
 struct arbre *sag;
 struct arbre *sad;
}arbre;
 
et c'est quand je fait par exemple l'instruction suivante que j'ai le message d'incompatibilité des types:
arbre * aux;
aux->sag=tab[cpt];        

n°997237
Emmanuel D​elahaye
C is a sharp tool
Posté le 01-03-2005 à 15:30:48  profilanswer
 

jans a écrit :

moi j'ai fait:
typedef struct arbre
{
 float b;
 char a;
 struct tableau tab[100];
 struct arbre *sag;
 struct arbre *sad;
}arbre;
 
et c'est quand je fait par exemple l'instruction suivante que j'ai le message d'incompatibilité des types:
arbre * aux;
aux->sag=tab[cpt];


 
Secouage de neurone basique...
 
1 - Quel est le type de aux->sag ?
2 - Quel est le type de tab[cpt] ?
3 - Sont-ils identiques ?
4 - Si la réponse est non, c'est qu'il y a un bug. Tu cherches à enfoncer une vis avec un marteau... Il faut se mettre d'accord et le cast n'est pas la solution!


Message édité par Emmanuel Delahaye le 01-03-2005 à 15:32:06

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°997263
Sve@r
Posté le 01-03-2005 à 15:46:44  profilanswer
 

jans a écrit :

moi j'ai fait:
typedef struct arbre
{
 float b;
 char a;
 struct tableau tab[100];
 struct arbre *sag;
 struct arbre *sad;
}arbre;
 
et c'est quand je fait par exemple l'instruction suivante que j'ai le message d'incompatibilité des types:
arbre * aux;
aux->sag=tab[cpt];


 
Emmanuel a été assez direct. Je vais être un peu plus souple
1) ta structure que tu nommes "arbre" caractérise en fait un noeud de ton arbre et non ton arbre lui-même. Le fait même que tu lui aies donné ce nom montre que tu ne connais pas trop bien le principe d'un arbre.
Cette url http://www.csse.monash.edu.au/~llo [...] /Sort/Heap te montre une page contenant un dessin d'arbre.
2) quand on crée un arbre, on a comme but de ranger un élément distinct par noeud. Quand on voit ta structure, on a l'impression que tu as envie de stocker les 100 éléments dans un seul noeud.
 
Essaye de faire qq dessins sur une feuille pour que tu arrives bien à te représenter ce qu'est un arbre. Ensuite, la programmation ira très facilement.


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1000238
jans
Posté le 03-03-2005 à 23:00:38  profilanswer
 

je croyais avoir mieux compris..j'ai fait les déclarations suivantes:
typedef struct t_noeud  
{  
 float b;  
 char a;  
  struct arbre *sag;  
 struct arbre *sad;  
}t_noeud;  
t_noeud * noeud
je n'ai plus de problemes d'incompatibilité des types,je n'ai aucune erreur. mais à l'execution mais j'ai le message access violation..quand je fais noeud->sag->b=tabocc[i].b;  (je sais que ça marche quand on fait noeud->b=tabocc[i].b) mais moi je veux lui dire d'aller dans le sag..
C'est peut-etre encore une question stupide,et je prend encore le risque d'avoir des remarques désobligeantes de ce cher Emmanuel mais bon, là je vois pas du tout..

n°1000240
Emmanuel D​elahaye
C is a sharp tool
Posté le 03-03-2005 à 23:07:24  profilanswer
 

jans a écrit :

je prend encore le risque d'avoir des remarques désobligeantes de ce cher Emmanuel


Si tu préfères qu'on te tienne la main pour aller pisser, ce sera sans moi...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1000242
Emmanuel D​elahaye
C is a sharp tool
Posté le 03-03-2005 à 23:09:19  profilanswer
 

jans a écrit :



typedef struct t_noeud  
{  
 float b;  
 char a;  
  struct arbre *sag;  
 struct arbre *sad;  
}t_noeud;  
t_noeud * noeud;


je n'ai plus de problemes d'incompatibilité des types,je n'ai aucune erreur. mais à l'execution mais j'ai le message access violation..quand je fais noeud->sag->b=tabocc[i].b;  (je sais que ça marche quand on fait noeud->b=tabocc[i].b) mais moi je veux lui dire d'aller dans le sag..


Les objets pointés ont-ils été créés? On ne voit pas ton code, difficile de t'aider...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1006322
Sve@r
Posté le 09-03-2005 à 07:19:34  profilanswer
 

jans a écrit :

je croyais avoir mieux compris..j'ai fait les déclarations suivantes:
typedef struct t_noeud  
{  
 float b;  
 char a;  
  struct arbre *sag;  
 struct arbre *sad;  
}t_noeud;  
t_noeud * noeud
je n'ai plus de problemes d'incompatibilité des types,je n'ai aucune erreur. mais à l'execution mais j'ai le message access violation..quand je fais noeud->sag->b=tabocc[i].b;  (je sais que ça marche quand on fait noeud->b=tabocc[i].b) mais moi je veux lui dire d'aller dans le sag..
C'est peut-etre encore une question stupide,et je prend encore le risque d'avoir des remarques désobligeantes de ce cher Emmanuel mais bon, là je vois pas du tout..


 
Pour que "noeud->sag->b" existe, il faut que
1) la variable "noeud" pointe vers un élément valide de ton arbre (alloué par "malloc" )
2) la variable "noeud->sag" pointe aussi vers un élément valide
 
En général, quand on veut remplir et placer un noeud
1) on alloue le noeud avec malloc
2) on remplit ses éléments et on veille bien à ce que les pointeurs gauche et droite soient à "0" parce que cette valeur servira de sentinelle lorsqu'on fera des recherches ultèrieures
3) on place le nouveau noeud dans l'arbre
Cette dernière manipulation se traduit par
a) rechercher le noeud "n" qui contiendra le nouveau noeud créé "new"
b) selon que le nouveau noeud va à gauche ou droite du noeud trouvé, on remplit le pointeur gauche ou droite "n->sag=new" ou "n->sad=new"
 
Ce schéma simpliste te permet de ne pas avoir de soucis du style "n->sag->b existe-t-il ?"


Message édité par Sve@r le 09-03-2005 à 07:20:24

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  ??tableau et arbre??

 

Sujets relatifs
liens entre les cellules d'un tableauJe n'arrive pas a faire ma regex dans ce tableau
[résolu]tableau avec CSS, pb sous IE[PERL] fonction Split et tableau HTML
Comment explorer un arbre correctement????tableau en bas de page
tri d'un tableau 1D c++jsp +tableau
[debutant] tableau java[VB] Initialisation d'un tableau multidimentions ?
Plus de sujets relatifs à : ??tableau et arbre??


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR