diff --git a/src/competence.c b/src/competence.c index 5e52a36dda010eccf8939ccc8df5110e59e1b33e..4903f40d319df1c7abb78ef1a8d7245e0a1ff189 100644 --- a/src/competence.c +++ b/src/competence.c @@ -60,6 +60,16 @@ int estVide(Competence *c) return(c->enfant==NULL); } +/*! + * \fn int aUnFrere(Competence *c) + * \brief La fonction indique si une competence a un frère. + * + * \return vrai ou faux. + */ +int aUnFrere(Competence *c) +{ + return(c->frere!=NULL); +} /* -------------------------------------------------------*/ /* Fonctions de set des competences */ @@ -74,25 +84,22 @@ int set_comp_enfant(Competence *parent, Competence *nouvel_enfant) /* Ne foncti } else // Solution cracra mais ça ne marche pas autrement (avec un while) // { - if(estVide(parent->enfant)) - { - parent->enfant->frere = nouvel_enfant; - } - else if(estVide(parent->enfant->frere)) - { - parent->enfant->frere->frere = nouvel_enfant; - } - else if(estVide(parent->enfant->frere->frere)) - { - parent->enfant->frere->frere->frere = nouvel_enfant; - } + set_comp_frere(parent->enfant, nouvel_enfant); } return 0; } int set_comp_frere(Competence *noeud, Competence *nouveau_frere) { - noeud->frere = nouveau_frere; + if(aUnFrere(noeud)) + { + set_comp_frere(noeud->frere, nouveau_frere); + } + else + { + init_Competence(noeud->frere); + noeud->frere = nouveau_frere; + } return 0; }