bonsoir tout le monde , j'ai un projet à rendre mais je n'arrive pas à compiler ce code et je pense que le problème réside dans l'une des trois fonctions !! Qui pourra m'aider !!
c'est un programme de gestion des clients d'une auto-ecole !!
#include<stdio.h>
#include<stdlib.h>
struct date{
int jour;
int mois;
int annee;
};
typedef struct date date;
struct heure{
int h;
int m;
};
struct cellule_seance{
int id_seance;
struct heure heure_seance;
date date_seance;
struct cellule_seance *suiv;
};
typedef struct cellule_seance cellule_seance;
struct liste_seance{
cellule_seance *tete;
cellule_seance *queue;
};
typedef struct liste_seance liste_seance;
struct faute_seance{
int id_seance;
int nb_faute;
};
typedef struct faute_seance faute_seance;
struct examen_eleve{
int id_examen;
int nb_fautes;
} ;
struct cellule_eleve{
int id_eleve;
char *nom;
char *prenom;
int nb_seance;
faute_seance s[20];
float moy;
int nb_examen;
examen_eleve e[20];
struct cellule_eleve *suiv;
};
typedef struct cellule_eleve cellule_eleve;
struct liste_eleve{
cellule_eleve *tete;
cellule_eleve *queue;
};
typedef struct liste_eleve liste_eleve;
struct examen{
int id_examen;
date date_examen;
heure heure_examen;
int nb_eleve;
int nb_reussis;
struct examen *suiv;
};
typedef struct examen examen;
struct liste_examen{
examen *tete;
examen* queue;
};
typedef liste_examen liste_examen;
void remplir(liste_eleve l){
cellule_eleve *p,*c;
/**************************1**************************/
l.tete=(cellule_eleve*)malloc(sizeof(cellule_eleve));
c=(cellule_eleve*)malloc(sizeof(cellule_eleve));
p=(cellule_eleve*)malloc(sizeof(cellule_eleve));
c->id_eleve=33;
c->nom="bensaad";
c->prenom="amir";
c->nb_seance=10;
c->s[0].nb_faute=0; c->s[0].id_seance=1;
c->s[1].nb_faute=0; c->s[1].id_seance=2;
c->s[2].nb_faute=5; c->s[2].id_seance=3;
c->s[3].nb_faute=3; c->s[3].id_seance=4;
c->s[4].nb_faute=2; c->s[4].id_seance=5;
c->s[5].nb_faute=1; c->s[5].id_seance=6;
c->s[6].nb_faute=4; c->s[6].id_seance=7;
c->s[7].nb_faute=0; c->s[7].id_seance=8;
c->s[8].nb_faute=0; c->s[8].id_seance=9;
c->s[9].nb_faute=1; c->s[9].id_seance=10;
c->suiv=NULL;
p=c;
l.tete=c;
/**************************2**************************/
c->id_eleve=26;
c->nom="tifefi";
c->prenom="ali";
c->nb_seance=4;
c->s[0].nb_faute=0; c->s[0].id_seance=6;
c->s[1].nb_faute=2; c->s[1].id_seance=7;
c->s[2].nb_faute=1; c->s[2].id_seance=8;
c->s[3].nb_faute=1; c->s[3].id_seance=9;
c->suiv=NULL;
p->suiv=c;
/**************************3**************************/
c->id_eleve=51;
c->nom="trabelsi";
c->prenom="salma";
c->nb_seance=10;
c->s[0].nb_faute=3; c->s[0].id_seance=1;
c->s[1].nb_faute=3; c->s[1].id_seance=2;
c->s[2].nb_faute=3; c->s[2].id_seance=3;
c->s[3].nb_faute=1; c->s[3].id_seance=4;
c->s[4].nb_faute=0; c->s[4].id_seance=5;
c->s[5].nb_faute=0; c->s[5].id_seance=6;
c->s[6].nb_faute=0; c->s[6].id_seance=7;
c->s[7].nb_faute=2; c->s[7].id_seance=8;
c->s[8].nb_faute=1; c->s[8].id_seance=9;
c->s[9].nb_faute=1; c->s[9].id_seance=10;
c->suiv=NULL;
p->suiv=c;
p=c;
/**************************4**************************/
c->id_eleve=32;
c->nom="zendeh";
c->prenom="mounir";
c->nb_seance=8;
c->s[0].nb_faute=3; c->s[0].id_seance=1;
c->s[1].nb_faute=4; c->s[1].id_seance=3;
c->s[2].nb_faute=6; c->s[2].id_seance=5;
c->s[3].nb_faute=2; c->s[3].id_seance=6;
c->s[4].nb_faute=1; c->s[4].id_seance=7;
c->s[5].nb_faute=0; c->s[5].id_seance=8;
c->s[6].nb_faute=0; c->s[6].id_seance=9;
c->s[7].nb_faute=1; c->s[7].id_seance=10;
c->suiv=NULL;
p=c;
l.tete=c;
}
/**************************5**************************/
/* p->id_eleve=43;
p->nom="elbeji";
p->prenom="najla";
p->nb_seance=6;
p->s[0].nb_faute=3; p->s[0].id_seance=3;
p->s[1].nb_faute=0; p->s[1].id_seance=4;
p->s[2].nb_faute=0; p->s[2].id_seance=5;
p->s[3].nb_faute=1; p->s[3].id_seance=6;
p->s[4].nb_faute=3; p->s[4].id_seance=7;
p->s[5].nb_faute=0; p->s[5].id_seance=8;
p->suiv=(cellule_eleve*)malloc(sizeof(cellule_eleve));
p=p->suiv;
/**************************6**************************/
/* p->id_eleve=53;
p->nom="ayari";
p->prenom="mohamed";
p->nb_seance=3;
p->s[0].nb_faute=3; p->s[0].id_seance=7;
p->s[1].nb_faute=2; p->s[1].id_seance=9;
p->s[2].nb_faute=1; p->s[2].id_seance=10;
p->suiv=(cellule_eleve*)malloc(sizeof(cellule_eleve));
p=p->suiv;
/**************************7**************************/
/* p->id_eleve=13;
p->nom="bensalah";
p->prenom="ahmed";
p->nb_seance=5;
p->s[0].nb_faute=5; p->s[0].id_seance=1;
p->s[1].nb_faute=0; p->s[1].id_seance=2;
p->s[2].nb_faute=0; p->s[2].id_seance=3;
p->s[3].nb_faute=1; p->s[3].id_seance=4;
p->s[4].nb_faute=3; p->s[4].id_seance=5;
p->suiv=(cellule_eleve*)malloc(sizeof(cellule_eleve));
p=p->suiv;
/**************************8**************************/
/* p->id_eleve=25;
p->nom="guirat";
p->prenom="sophia";
p->nb_seance=4;
p->s[0].nb_faute=3; p->s[0].id_seance=5;
p->s[1].nb_faute=2; p->s[1].id_seance=6;
p->s[2].nb_faute=0; p->s[2].id_seance=7;
p->s[3].nb_faute=0; p->s[3].id_seance=9;
p->suiv=(cellule_eleve*)malloc(sizeof(cellule_eleve));
p=p->suiv;
/**************************9**************************/ +
/* p->id_eleve=19;
p->nom="bensalem";
p->prenom="ridha";
p->nb_seance=6;
p->s[0].nb_faute=3; p->s[0].id_seance=3;
p->s[1].nb_faute=1; p->s[1].id_seance=4;
p->s[2].nb_faute=2; p->s[2].id_seance=6;
p->s[3].nb_faute=0; p->s[3].id_seance=7;
p->s[4].nb_faute=1; p->s[4].id_seance=8;
p->s[5].nb_faute=0; p->s[5].id_seance=10;
p->suiv=(cellule_eleve*)malloc(sizeof(cellule_eleve));
p=p->suiv;
/**************************10**************************/
/* c=(cellule_eleve*)malloc(sizeof(cellule_eleve));
c->id_eleve=20;
c->nom="hamemi";
c->prenom="olfa";
c->nb_seance=5;
c->s[0].nb_faute=4; c->s[0].id_seance=1;
c->s[1].nb_faute=2; c->s[1].id_seance=2;
c->s[2].nb_faute=0; c->s[2].id_seance=4;
c->s[3].nb_faute=3; c->s[3].id_seance=5;
c->s[3].nb_faute=0; c->s[3].id_seance=6;
c->suiv=NULL;
p->suiv=c;
p=c;
l.queue=p;
} */
void affichage(liste_eleve t){
liste_eleve p; p.tete=t.tete;
int i=0,j;
while(p.tete->suiv!=t.queue){
printf("\nl'eleve %s %s numéro %d qui a comme identificateur %d",p.tete->nom,p.tete->prenom,i,p.tete->id_eleve);
if(p.tete->nb_seance!=0){
printf("a assisté à %d séance(s):",p.tete->nb_seance);
for(j=0;j<p.tete->nb_seance;j++){
printf("\n%d\tnombre de fautes est: %d",p.tete->s[j].id_seance,p.tete->s[j].nb_faute);
}
}
printf("cet(te) eleve a passé %d examen(s):",p.tete->nb_examen);
if(p.tete->nb_examen!=0){
for(j=0;j<p.tete->nb_examen;j++){
printf("\nl examen %d\tnombre de faute(s):%d",p.tete->e[j].id_examen,p.tete->e[j].nb_fautes);
}
}
p.tete=p.tete->suiv;
i++;
}
}
void affichage_seance(liste_seance l){
cellule_seance *p;p=l.tete; int i=1;
while(p->suiv!=l.queue){
printf("\nla seance d identificateur %d de la date %d/%d/%d à l heure %dh:%d",i,p->date_seance.jour,p->date_seance.mois,p->date_seance.annee,p->heure_seance.h,p->heure_seance.m);
p=p->suiv;
i++;
}
}
/*
void affichage_examen(liste_examen*.tete t,liste_examen*.queue q){
liste_examen*.tete p=t; int i=1;
while(p*.suiv!=q){
printf("\nl examen numéro %d de la date %d/%d/%d à l'heure %dh:%d",i,p*.date_examen.jour,p*.date_examen.mois,p*.date_examen.annee,p*.heure_examen.h,p*.heure_examen.m);
if(p*.nb_eleve!=0){
printf("dont %d eleves ont assisté et %d réussi(s)",p*.nb_eleve,p*.nb_reussis);
}
else printf("qui n'est pas encore passé");
p=p*.suiv;i++;
}
}
void insertion_eleve(liste_eleve l,int nb_eleve){
liste_eleve*.tete p,q,r;
malloc(q,sizeof(cellule_eleve));
printf("\ndonncer lidentificateur de l'eleve");scanf("%d",q*.id_eleve);
printf("\ndonncer le nom de l'eleve");scanf("%s",q*.nom);
printf("\ndonncer le prenom de l'eleve");scanf("%s",q*.prenom);
q*.nb_seance=0;q*.nb_examen=0;
if(pos==nb_eleve){
p=l*.queue;
l*.queue=q;p*.suiv=q;q*.suiv=null;
}
else if(pos==1){
q*.suiv=l*.tete;l*.tete=q;
}
else{p=l*.tete
if (pos!=2){
for(i=0;i<pos-2;i++){
p=p*.suiv;
}
}
r=p*.suiv;p*.suiv=q;q*.suiv=r;
}
}
void ajout_seance_eleve(liste_eleve l){
int a; liste_eleve*.tete p;
printf("donner l'identificateur de l'eleve auquel vouv voulez ajouter une séance");
scanf("%d",&a);
while(p*.id_eleve!=a){
p=p*.suiv;
}
p*.nb_seance++;
printf("\ndonner l'identificateur de cette seance ajoutée");
scanf("%d",&p*.s[nb_seance].id_examen);
printf("\ndonner le nombre de fautes obtenues par l'eleve au cours de cette seance");
scanf("%d",&p*.s[nb_seance].nb_fautes);
}
void modifier_faute_seance(liste_eleve l){
int a,i,b; liste_eleve*.tete p=l*.tete;
printf("\ndonner l'identificateur de l'eleve que vous voulez changer le nombre de fautes de seance");
scanf("%d",&a);
while(p*.id_eleve!=a){
p=p*.suiv;
}
printf("\ndonner l'identificateur de la seance que vous voulez changer le nombre de fautes");
scanf("%d",&b);
i=0;
while(p*.s[i].id_seance!=b){
i++;
}
printf("\nvoila l'ancien nombre de fautes %d veuillez entrer le nouveau nombre",p*.s[i].nb_fautes);
scanf("%d",&p*.s[i].nb_fautes);
printf("\nmodification terminée");
}
void modifier_faute_examen(liste_eleve l){
int a,i,b; liste_eleve*.tete p=l*.tete;
printf("\ndonner l'identificateur de l'eleve que vous voulez changer le nombre de fautes d'examen");
scanf("%d",&a);
while(p*.id_eleve!=a){
p=p*.suiv;
}
printf("\ndonner l'identificateur de l'examen que vous voulez changer le nombre de fautes");
scanf("%d",&b);
i=0;
while(p*.e[i].id_examen!=b){
i++;
}
printf("\nvoila l'ancien nombre de fautes %d veuillez entrer le nouveau nombre",p*.s[i].nb_fautes);
scanf("%d",&p*.e[i].nb_fautes);
printf("\nmodification terminée");
}
*/void modification_seance(liste_seance l){
int a; liste_seance*.tete p=l*.tete;
printf("\ndonner l'identificateur de la seance que vous voulez modifier");
scanf("%d",&a);
while(p*.id_seance!=a){
p=p*.suiv;
}
printf("\ntaper le nouveau identificateur de cette seance si vous voulez le changer sinon taper l'ancien");
scanf("%d",&p*.id_seance);
printf("\ntaper la nouvelle date si vous voulez la changer sinon taper l'ancienne date: jour mois année");
scanf("%d",&p*.date_seance.jour);
scanf("%d",&p*.date_seance.mois);
scanf("%d",&p*.date_seance.annee);
printf("\ntaper la nouvelle heure si vous voulez la changer sinon taper l'ancienne: heure minutes");
scanf("%d",&p*.heure_seance.h);
scanf("%d",&p*.heure_seance.m);
}
void suppression_seance(liste_seance l){
liste_seance*.tete p=l*.tete,q;
int a;
printf("\ndonner l'identificateur de la seance que vous voulez supprimer");
scanf("%d",&a);
if(a==p*.id_seance){
q=p;l*.tete=p*.suiv;
free(q);
}
else if(a==l*.queue.id_seance){
while(p*.suiv.id_seance!=a){
p=p*.suiv;
}
q=l*.queue;
p*.suiv=NULL;
l*queue=p;free(q);
}
else{
while((p*.suiv.id_seance!=a){
p=p*.suiv;
}
q=p*.suiv;
p*.suiv=p*.suiv.suiv;
free(q);
}
}
/*
void I(liste_eleve l){
liste_eleve*.tete p=l*.tete;
while(p*.suiv!=NULL){
if(p*.nb_examen!=0){
printf("\n%s",p*.nom);
printf("\t%s",p*.prenom);
}
}
void II(liste_eleve l){
liste_eleve*.tete p=l*.tete;
int i,a;
while(p*.suiv!=NULL){
a=1;i=0;
while(a==1){
if((p*.s[i+nb_seance-4]<=5)&&(i<p*.nb_seance)){
i++;
}
}
if(a==1){
printf(("\n%s",&p*.nom);
printf(("\t%s",&p*.prenom);
}
p=p*.suiv;
}
}
void III(liste_eleve l1 liste_seance l2){
liste_eleve*.tete p=l1*.tete;
liste_seance*.tete q=l2*.tete;
printf("les seances qui ont été testéespar tout les élèves sont ceux aui ont été passé dans les sances d'identificateur : ");
while(q*.suiv!=NULL){
a=1;i=0;
while((a==1)&&(p*.suiv!=NULL)){
while((a==1)&&(i!=p*.nb_seance)){
if(p*.s[i].id_seance!=q*.id_seance){
a=0;
}
else i++;
p=p*.suiv;
}
if(a==1){printf("\n%d",q*.id_seance);}
q=q*.suiv;
}
void echange(cellule_eleve p,q){
cellule_eleve aux; int i;
aux*.id_eleve=p*.id_eleve;
aux*.nom=p*.nom;
aux*.prenom=p*.prenom;
aux*.nb_seance=p*.nb_seance;
aux*.moy=p*.moy;
aux*.nb_examen=p*.nb_examen;
for(i=0;i<p*.nb_seance;i++){
aux.s[i].id_seance=p*.s[i].id_seance;
aux*.s[i].nb_fautes=p*.s[i].nb_fautes;
}
for(i=0;i<p*.nb_examen;i++){
aux.s[i].id_examen=p*.s[i].id_examen;
aux*.s[i].nb_fautes=p*.s[i].nb_fautes;
}
p*.id_eleve=q*.id_eleve;
p*.nom=q*.nom;
p*.prenom=q*.prenom;
p*.nb_seance=q*.nb_seance;
p*.moy=q*.moy;
p*.nb_examen=q*.nb_examen;
for(i=0;i<q*.nb_seance;i++){
p.s[i].id_seance=q*.s[i].id_seance;
p*.s[i].nb_fautes=q*.s[i].nb_fautes;
}
for(i=0;i<q*.nb_examen;i++){
aux.s[i].id_examen=q*.s[i].id_examen;
aux*.s[i].nb_fautes=q*.s[i].nb_fautes;
}
q*.id_eleve=aux*.id_eleve;
q*.nom=aux*.nom;
q*.prenom= aux*.prenom;
q*.nb_seance=aux*.nb_seance;
q*.moy=aux*.moy;
q*.nb_examen=aux*.nb_examen;
for(i=0;i<aux*.nb_seance;i++){
q.s[i].id_seance=aux*.s[i].id_seance;
q*.s[i].nb_fautes=aux*.s[i].nb_fautes;
}
for(i=0;i<aux*.nb_examen;i++){
aux.s[i].id_examen=aux*.s[i].id_examen;
aux*.s[i].nb_fautes=aux*.s[i].nb_fautes;
}
void IV(liste_eleve l){
liste_eleve*.tete p=l*.tete,q,r=l*.tete;
int i,a=0,permut;
while(p*.suiv!=NULL){
for(i=0;i<p*.nb_seance;i++){
a=a+p*.s[i].nb_fautes;
}
p*.moy=a/p*.nb_seance;
p=p*.suiv;
};
do{
permut=0;
while(r!=NULL){
if(r*.moy<q*.moy){
echange(r,q);
permut=1;
}
r=r*.suiv;q=q*.suiv;
}
}while(permut==1);
}
void V(liste_seance l1,liste_eleve l2){
liste_seance p=l1*.tete;
liste_eleve q=l2*.tete;
int a,b,i;
while(p*.suiv){
a=1;
while((q*.suiv)&&(a==1)){
i=0;b=1;
while((i<q*.nb_seance)&&(b==1)){
if(q*.s[i].id_seance==p*.id_seance){
i++;
}
else b=0;
}
if(b==1){
printf("la seance %d n'a jamais été utilisée",p*.id_seance);
}
q=q*.suiv;
}
p=p*.suiv;
}
*/
void main(){
liste_eleve l;
l.tete=(cellule_eleve*)malloc(sizeof(cellule_eleve));
int nb_seance=10;
int nb_eleve=10;
remplir(l);
affichage(l);
}
Achour