LCoileux
-
Modifié par LCoileux le 30/04/2010 à 18:53
LCoileux -
30 avril 2010 à 22:49
Bonjour à tous.
Débutant en C, je suis en train de faire un petit exercice pour m'entrainer.
Le but est de remplir une liste de containers dans un nombre de silos ayant une hauteur max.
J'ai essayé cet algo:
void remplir1(LesSilos stockage, int nbSilos, int hMax, GSList *liste){
int nbContainers = g_slist_length(liste); /*nombre de containers*/
int containerEnCours = 1; /*container que l'on recupere*/
int siloEnCours = 1; /*Silo dans lequel on est*/
int hauteurRestante = hMax; /*Hauteur restante du silo*/
int silos = nbSilos; /*Nombre de silos disponibles*/
while(nbContainers > 0){ /*Tant qu'il reste des containers*/
Element *elt = (Element*)g_slist_nth_data(liste, containerEnCours); /*Recuperation du container*/
while(hauteurRestante >= elt->hauteurElement){ /*Tant qu'il reste de la place*/
elt = (Element*)g_slist_nth_data(liste, containerEnCours); /*On recupere le container*/
empiler(stockage[siloEnCours], elt); /*On empile*/
nbContainers--; /*On diminue la taille du container*/
containerEnCours++; /*On recupere le container suivant*/
hauteurRestante = hauteurRestante - elt->hauteurElement; /*On diminue la taille restante*/
}
siloEnCours++; /*On passe au silo d'apres*/
silos--; /*On retire le silo*/
hauteurRestante = hMax; /*Il reste toute la place*/
}
}
où liste contient la liste des containers à empiler.
Seulement lorsque je l'execute, j'obtiens une erreur de segmentation, mais je ne vois pas d'où celà peut venir.