diff --git a/part2.don b/part2.don index f3228e8..8b1a8c5 100644 --- a/part2.don +++ b/part2.don @@ -2,7 +2,7 @@ 36 Dupont Jeannine -10.20 15.65 12.45 18.00 +10.20 15.65 12.45 18.00 12.00 2 Clermont-Ferrand Informatique @@ -15,7 +15,7 @@ Informatique 35 Durand Jean Jacques -15.75 12.25 9.50 17.00 +15.75 12.25 9.50 17.00 11.00 3 Aurillac Bio-Informatique @@ -32,7 +32,7 @@ Informatique 38 Henry Bertrand -5.20 14.65 11.23 14.00 +5.20 14.65 11.23 14.00 9.50 2 Clermont-Ferrand Informatique @@ -45,7 +45,7 @@ Informatique 37 Thérèse Francoise -10.50 12.65 14.45 16.00 +10.50 12.65 14.45 16.00 18.00 1 Clermont-Ferrand Bio-Informatique diff --git a/part3.c b/part3.c index 53c2fd9..08af5eb 100644 --- a/part3.c +++ b/part3.c @@ -2,3 +2,125 @@ #include #include #include"part3.h" + +Choix lireC(FILE *fe)//fonction extraite de la partie 2 +{ + Choix c; + fscanf(fe, "%s%*c", c.ville); + fgets(c.dptmt, 26, fe); + c.dptmt[strlen(c.dptmt)-1]= '\0'; + fscanf(fe, "%d %d%*c", &c.dec, &c.valid); + return c; +} + + +Listechx InsertTC(Listechx list, Choix m)//Insert en tête de la liste +{ + Maillonchx *mchx; + mchx = (Maillonchx*)malloc(sizeof(Maillonchx)); + if (mchx == NULL){printf("pb malloc"); exit(-1);} + mchx->chx = m; + mchx->suivchx = list; + return mchx; +} + + +Listechx InsertC(Listechx list, Choix m)//insert globalement dans liste de choix +{ + if (list == NULL){return InsertTC(list, m);} + if (strcmp(list->chx.dptmt, m.dptmt)>0){return InsertTC(list, m);} + list->suivchx = InsertC(list->suivchx, m); + return list; +} + + +Listecand InsertT(Listecand list, Candidat c)//Insert en tête de la liste +{ + Mailloncand *c1; + + c1 = (Mailloncand*)malloc(sizeof(Mailloncand)); + if (c1 == NULL){printf("pb malloc"); exit;} + c1->cand.nEtu = c.nEtu; + strcpy(c1->cand.nom, c.nom); + strcpy(c1->cand.prenom, c.prenom); + c1->cand.moymat = c.moymat; + c1->cand.moyfr = c.moyfr; + c1->cand.moyen = c.moyen; + c1->cand.moyspe = c.moyspe; + c1->cand.noteDoss = c.noteDoss; + c1->cand.nbchx = c.nbchx; + c1->cand.lchx = c.lchx; + c1->suivcand = list; + return c1; +} + + +Listecand Insert(Listecand list, Candidat c)//insert globalement +{ + if (list == NULL){return InsertT(list, c);} + if (strcmp(list->cand.nom, c.nom)>0){return InsertT(list, c);} + list->suivcand = Insert(list->suivcand, c); + return list; +} + + +Listecand Chargementlistecandidat(FILE *fe, Listecand lC, int *nbC)// fonction de chargement de la liste des candidats +{ + int cpt, j; + fscanf(fe, "%d", nbC); + for (j = 1; j <= *nbC; j++) + { + Candidat Ca; + fscanf(fe, "%d %s%*c", &Ca.nEtu, Ca.nom); + fgets(Ca.prenom, 31, fe); + Ca.prenom[strlen(Ca.prenom)-1]= '\0'; + fscanf(fe,"%f %f %f %f %f %d%*c", &Ca.moymat, &Ca.moyfr, &Ca.moyen, &Ca.moyspe, &Ca.noteDoss, &Ca.nbchx); + Ca.lchx=NULL; + + for (cpt = Ca.nbchx; cpt >= 1; cpt--) + { + Choix c; + c = lireC(fe);//lire le maillon avec la fonction plus haut + Ca.lchx = InsertC(Ca.lchx, c);//insert le maillon à sa bonne place + } + lC = Insert(lC, Ca); + } + fclose(fe); + return lC; +} + + + +void Save(Listecand lC, int nbC) +{ + FILE *fs; + fs=fopen("part2.don", "w"); + if (fs == NULL){printf("pb ouv fichier part2.don\n");exit(-1);} + int cpt; + fprintf(fs, "%d\n", nbC); + + saveC(lC, fs); +} + +void saveC(Listecand lC, FILE *fs) +{ + if (lC == NULL)return; + fprintf(fs, "%d\n", lC->cand.nEtu); + fprintf(fs, "%s\n", lC->cand.nom); + fprintf(fs, "%s\n", lC->cand.prenom); + fprintf(fs, "%.2f\t %.2f\t %.2f\t %.2f\t %.2f\n", lC->cand.moymat, lC->cand.moyfr, lC->cand.moyen, lC->cand.moyspe, lc->cand.noteDoss); + fprintf(fs, "%d\n", lC->cand.nbchx); + saveChx(lC->cand.lchx, fs); + saveC(lC->suivcand, fs); +} + + +void saveChx(Listechx lCh, FILE *fs) +{ + if (lCh == NULL)return; + fprintf(fs, "%s\n", lCh->chx.ville); + fprintf(fs, "%s\n", lCh->chx.dptmt); + fprintf(fs, "%d\n", lCh->chx.dec); + fprintf(fs, "%d\n", lCh->chx.valid); + saveChx(lCh->suivchx, fs); +} diff --git a/part3.h b/part3.h index 55bdbf5..e784c9b 100644 --- a/part3.h +++ b/part3.h @@ -24,7 +24,6 @@ typedef struct { float moyspe;//moyenne en spécialité float noteDoss;//note après étude du dossier int nbchx;//nombre de choix - int statut;//liste d'attente ou non Listechx lchx; }Candidat;