anek971
Messages postés34Date d'inscriptiondimanche 23 novembre 2003StatutMembreDernière intervention 6 juillet 2008
-
17 avril 2004 à 21:48
anek971
Messages postés34Date d'inscriptiondimanche 23 novembre 2003StatutMembreDernière intervention 6 juillet 2008
-
17 avril 2004 à 21:51
Bonjour a tous
Enfaite il y a déà eu un poste sur le site sur ce sujet mais ayant le mm tp a faire je me suis rendu compte ke sa fonction quitter ne marchait pas, biensur je tiens a dire que je n'ai pas fait du copier coller mais que j'ai bien fait mon tp et j'ai chercher de l'aide sur ce site :).
C'est un programme qui fait un agenda,
Mais j'ai un prob avec ma fonction quitter elle efface le nom seulement et laisse le numero de tel.
Alors je poste
}
void quitter(struct fiche **pp_liste)
{
int fin_free=0;
int search=0;
struct fiche *p_look; //variable qui contient
// la liste des personnes
struct fiche *p_suiv;
struct fiche *p_temp;
p_look=(struct fiche*)malloc(sizeof(struct fiche));
p_suiv=(struct fiche*)malloc(sizeof(struct fiche));
p_temp=(struct fiche*)malloc(sizeof(struct fiche));
p_look=*pp_liste;
while(search==0)
{
if(p_look==NULL) //verifie si l'agenda n'est pas vide
{
printf("Espace deja libre\n");
search=1;
}
if((p_look!=NULL)&&(p_look->p_suivant==NULL))
search=2; //verifie si l'agenda contient 1 seule personne
if((p_look!=NULL)&&(p_look->p_suivant!=NULL))
/*verifie si l'agenda contient plus d'une personne*/
{
search=3;
fin_free=0;
}
}
printf("%d\n",search);
if(search==3)// si plusieurs personne dans l'agenda
{
while(fin_free==0)/*plus loin free prendra une autre valeur et indiquera qu'il n' y a plus personne */
{
if(p_look!=NULL)/* si l'agenda n'est pas vide*/
{
p_suiv=p_look->p_suivant;/*on met la fiche suivante ds p_suiv*/
free(p_look);/* on libere la place*/
p_look=NULL;/*ca j'ai vu ca ds un de mes boukins :)*/
p_look=p_suiv;/*ensuite on met p_look au suivant*/
}
if(p_look==NULL)/*si plus personne dans l'agenda */
{
fin_free=4;/*fin_free change de valeur ainsi on sor de la condition*/
}
}
if(search==2)/*si une personne ds l'agenda seulement*/
{
/*pareil que pour l'autre sauf ke la on a pas besoin du suivant*/
free(p_look);
p_look=NULL;
}
}
}
int main(void)
{
int compteur=0;
int choix;
struct fiche *p_liste=NULL;
free(p_liste);
do
{
printf("Vous pouvez:\n");
printf(" 1-Ajouter une personne.\n");
printf(" 2-Afficher le contenu de l'agenda.\n");
printf(" 3-Retirer une personne.\n");
printf(" 4-Trier les personnes.\n");
printf(" 0-quitter l'application.\n");
printf("\nVotre choix: ");
scanf("%d",&choix);
if(choix==1)
compteur++;
if((compteur>0)&&(choix==3))
compteur=compteur-1;
if(choix==0)
compteur=0;
switch(choix)
{
case 0:quitter(&p_liste);
break;
case 1:ajouter(&p_liste);
break;
case 2:afficher(p_liste,compteur);
break;
case 3:retirer(&p_liste,compteur);
break;
case 4:trier(&p_liste,compteur);
break;
}
printf("vous avez entrez: %d personne(s)\n",compteur);
}
while(choix!=5);
}
J'ai pas mis le reste parceke ca marche enfin aumoins al fonction retirer ou je ne rencontre pas ce porbleme la.
désolé si le poste est long, et merci d'avance :blush)