Nous sommes actuellement le Sam Déc 28, 2024 4:40 am
Publier un nouveau sujetPublier une réponse Page 1 sur 1   [ 1 message ]
Auteur Message
 Sujet du message: Probleme avec le chargement dun arbre?
MessagePublié: Jeu Juin 02, 2011 11:13 pm 

Inscrit le: Jeu Avr 14, 2011 3:32 pm
Messages: 428
Bonjour a tous ,
Je vous explose mon probleme en esperant que quelquun puisse y repondre merci davance.

Voila :
Je dois charger un arbre (fils/frere) a partir dun fichier texte , la representation de ce fichier est :
-Code composé : 5 caracteres (sa sera un entier)
-Code composant : 5 caracteres (un entier aussi)
-Quantite : 5 caracteres aussi (un entier aussi) (pas tres utile pour le probleme que jexpose)
En bref , le code composé represente le pere du code composant donc je vais devoir placer le code composant en fonction du fait que je trouve le code composant ou pas :
2 Cas apparaissent !
Le premier : Je ne trouve pas le code composé (le pere) donc je cree le pere je le met comme frere a la racine et je cree le fils en le raccordant au pere
Le deuxieme : Je trouve le code composé donc je vais devoir creer le fils et lajouter au pere , mais ici commencent les ennuis
->> Je mexplique , en fait le code composé (le pere que jai cherche et que jai trouvé) peut apparaitre plusieurs fois dans larbre donc il faudra que je retrouve chaque fois le pere et que je lui ajoute le fils que jai (le code composant)
->>>>Donc mon probleme est que je narrive pas a faire de telle sorte de prendre ces cas en considerations !

Je poste le code que jai ecrit en esperant que vous pouvez maider a trouver la solution .

struct data

int code;
int quantite;
;
typedef struct data DATA;

struct arbre

struct arbre* fils;
struct arbre* frere;
DATA d;
;
typedef struct arbre ARBRE;

ARBRE* seek_compose(ARBRE* first,int code) //renvois un pointeur sur un noeud dont le code est egal a "code" sinon renvois null

ARBRE* p;
if (first)

if ((first->d).code==code) return(first);
if ((p=seek_compose(first->fils,code))) return(p);
return(seek_compose(first->frere,code));

return(NULL);



ARBRE* charg_l_procede(FILE*fp) // chargement de Procede.txt dans un ARBRE* et on revois ce pointeur la


ARBRE* test;
char s[50];int code_pere;
ARBRE* first=NULL;
ARBRE* p;ARBRE* tmp;ARBRE* tmp2;ARBRE* tmp3;


DATA D;
while(fgets(s,50,fp))

sscanf(s,"%5d%5d%5d",&(code_pere),&(D.code),&(D.quantite));
tmp=seek_compose(first,code_pere); // On recherche si le "composé existe ou pas"
if (!tmp) // ce cas est celui ou le "composé" nexiste pas

p=(ARBRE*)malloc(sizeof(ARBRE)); // on va mettre dans p le composé
(p->d).code=code_pere;
(p->d).quantite=1;
tmp2=(ARBRE*)malloc(sizeof(ARBRE)); // dans tmp2 on met le "composant"
tmp2->fils=NULL;
tmp2->frere=NULL;
(tmp2->d)=D;
p->fils=tmp2;
p->frere=first;
first=p;

else

p=(ARBRE*)malloc(sizeof(ARBRE));
p->frere=tmp->fils;
p->fils=NULL;
p->d=D;
tmp->fils=p;


return(first);

Ahhh TB merci pour ton temps et pour ta réponse surtout vu lheure !
Mais jai le regret de te dire que tu est passé a cote de mon problme , en fait si jai bien compris tu mas explique comment aller chercher le dernier frre pour pour insérer a cote de lui un nouveau fils du dit pre . ,
Je pense que ne me suis pas bien exprimé :) Donc je résume en fait je dois retrouver le pre du fils que je dois insérer mais le truc cest que le pre peut tre présent plusieurs fois et nimporte ou dans larbre donc mon problme est que je ne trouve pas comment retrouver ce pre autant de fois quil faut et y insérer le fils et en ne repassant pas par les pres que jai déj visité :)
Donc si sa reste ambigu prévenez moi .

PS: Ma soutenance de TP debute dans 4 heures et demi !


Haut
 Profil  
 
Afficher les messages publiés depuis:  Trier par  
Publier un nouveau sujetPublier une réponse Page 1 sur 1   [ 1 message ]


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit and 12 invités


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Recherche de:
Aller vers:  
cron

Click me:
forum-français
Deutsch Forum
日本語フォーラム
中文论坛
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Style base twilightbb Thanks to Daniel St. Jules of Gamexe.net
MW2 Style by FanFanLaTuFlippe contact: fanfanlatuflippe@live.fr
Traduction réalisée par Maël Soucaze © 2010 phpBB.fr
Forum Romano
Forum Brasileiro
العربي%20المنتدى
Zone 3D
Politique de confidentialité