diff --git a/part4.c b/part4.c index e69de29..2b253fe 100644 --- a/part4.c +++ b/part4.c @@ -0,0 +1,166 @@ +#include +#include +#include +#include"part4.h" + + +Filechx initchx (void){// initialise une file choix a NULL + Filechx f; + f.kechx = NULL; + f.ttchx = NULL; + return f; +} + + +Filecand initcand (void){// initialise une file candidat a NULL + Filecand f; + f.kecand = NULL; + f.ttcand = NULL; + return f; +} + +int testVideCand (Filecand f){// fonction test si la Filecand est vide return 1 sinon 0 + if (f.ttcand == NULL) return 1; + return 0; +} + +int testVideChx (Filechx f){// fonction test si la Filechx est vide return 1 sinon 0 + if (f.ttchx == NULL) return 1; + return 0; +} + +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 InsertN(Listecand list, Candidat c)//insert globalement en fonction de la note +{ + if (list == NULL){return InsertT(list, c);} + if (list->cand.noteDoss <=+ c.noteDoss){return InsertT(list, c);} + list->suivcand = InsertN(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, 26, 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); + } + return lC; +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +void test (void { + +}) \ No newline at end of file diff --git a/part4.don b/part4.don new file mode 100644 index 0000000..2810430 --- /dev/null +++ b/part4.don @@ -0,0 +1,53 @@ +4 +36 +Dupont +Jeannine +10.20 15.65 12.45 18.00 13.00 +2 +Clermont-Ferrand +Informatique +0 +0 +Aurillac +Informatique +0 +0 +35 +Durand +Jean Jacques +15.75 12.25 9.50 17.00 9.50 +3 +Aurillac +Bio-Informatique +0 +0 +Clermont-Ferrand +Informatique +0 +0 +Grenoble +Informatique +0 +0 +38 +Henry +Bertrand +5.20 14.65 11.23 14.00 12.00 +2 +Clermont-Ferrand +Informatique +0 +0 +Aurillac +Informatique +0 +0 +37 +Thérèse +Francoise +10.50 12.65 14.45 16.00 18.00 +1 +Clermont-Ferrand +Bio-Informatique +0 +0 diff --git a/part4.h b/part4.h index e69de29..cc4f287 100644 --- a/part4.h +++ b/part4.h @@ -0,0 +1,50 @@ +typedef struct { + char ville[26];//ville choisie + char dptmt[26];//département choisi + int dec;//décision du choix + int valid;//validation du candidat +}Choix; + + +typedef struct Listchx{ + Choix chx; + struct Listchx * suivchx; +}Maillonchx; + +typedef struct { + Maillonchx *ttchx; + Maillonchx *kechx;} Filechx; + + +typedef struct { + int nEtu;//numéro d'étudiant + char nom[26];//nom de l'étudiant + char prenom[26];//prénom de l'étudiant + float moymat;//moyenne en maths + float moyfr;//moyenne en français + float moyen;//moyenne en anglais + float moyspe;//moyenne en spécialité + float noteDoss;//note après étude du dossier + int nbchx;//nombre de choix + Listechx lchx; +}Candidat; + + +typedef struct Mailloncand{ + Candidat cand; + struct Mailloncand * suivcand; +}Mailloncand; + +typedef struct { + Mailloncand *ttcand; + Mailloncand *kecand;} Filecand; + + + +Filechx initchx (void);// initialise une file choix a NULL +Filecand initcand (void);// initialise une file candidat a NULL +int testVideCand (Filecand f);// fonction test si la Filecand est vide return 1 sinon 0 + + + + diff --git a/tpart4.c b/tpart4.c index e69de29..3ff02f0 100644 --- a/tpart4.c +++ b/tpart4.c @@ -0,0 +1,9 @@ +#include +#include +#include +#include"part4.h" + +int main (void){ + test(); + return 0; +} \ No newline at end of file