From 2d052620fb94b358329de26b391e02395f20ae9a Mon Sep 17 00:00:00 2001 From: lolax Date: Thu, 29 Dec 2022 11:53:56 +0100 Subject: [PATCH] part 3 done --- part3.c | 113 +++++++++++++++++++++++++++++++++++++++++++++++++------- part3.h | 12 ++++-- test | Bin 22040 -> 0 bytes 3 files changed, 107 insertions(+), 18 deletions(-) delete mode 100644 test diff --git a/part3.c b/part3.c index d471174..b343e46 100644 --- a/part3.c +++ b/part3.c @@ -80,7 +80,7 @@ Listecand Chargementlistecandidat(FILE *fe, Listecand lC, int *nbC)// fonction d { Candidat Ca; fscanf(fe, "%d %s%*c", &Ca.nEtu, Ca.nom); - fgets(Ca.prenom, 31, fe); + 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; @@ -93,7 +93,6 @@ Listecand Chargementlistecandidat(FILE *fe, Listecand lC, int *nbC)// fonction d } lC = Insert(lC, Ca); } - fclose(fe); return lC; } @@ -198,27 +197,99 @@ void MajDecJury(Listecand lC, int nbC, int nbAcc) } +Listecand searchCand(Listecand lC, char *nom, char *prenom) +{ + if (lC == NULL)return lC; + if (strcmp(lC->cand.nom, nom)==0 && strcmp(lC->cand.prenom, prenom)==0)return lC; + return searchCand(lC, nom, prenom); +} + + +Listecand MajNote(Listecand lC, char *nom, char *prenom, float newNote) +{ + Listecand c; + c = searchCand(lC, nom, prenom);//recherche du candidat + if (c == NULL) + { + printf("Aucun candidat n'a été trouvé...\n"); + } + else + { + c->cand.noteDoss = newNote; + } + return lC; +} + + +Listecand splitAccepted(Listecand origin) +{ + Listecand lCAcc=NULL; + while (origin != NULL) + { + Listechx iutclinf; + iutclinf = searchChx(origin->cand.lchx, "Clermont-Ferrand", "Informatique"); + if (iutclinf->chx.dec == 1 && iutclinf !=NULL) + { + lCAcc = Insert(lCAcc, origin->cand); + } + origin = origin->suivcand; + } + return lCAcc; +} + +Listecand splitWait(Listecand origin) +{ + Listecand lCW=NULL; + Listechx iutclinf; + iutclinf = searchChx(origin->cand.lchx, "Clermont-Ferrand", "Informatique"); + while (iutclinf->chx.dec == 1 && iutclinf != NULL) + { + origin = origin->suivcand; + if (origin == NULL)break;//on évite le tour de search inutile + iutclinf = searchChx(origin->cand.lchx, "Clermont-Ferrand", "Informatique");//tant qu'ils sont acceptés, on relis le candidat + } + while (iutclinf->chx.dec == 2 && iutclinf != NULL)//si en liste d'attente + { + lCW = Insert(lCW, origin->cand);//insertion dans la liste pour liste d'attente + origin = origin->suivcand; + if (origin == NULL)break;//on évite le tour de search inutile + iutclinf = searchChx(origin->cand.lchx, "Clermont-Ferrand", "Informatique"); + } + return lCW; +} + + void RespAdmin(void)//fonction dédiée au responsable d'admission { int nbC = 0, nbP; - float noteMin; + float noteMin, note; + char nom[26], prenom[26]; Listecand lC=NULL; + Listecand lCAcc=NULL, lCW=NULL;//ce qui servira pour les 2 listes, l'une des acceptés et l'autre des attentes char rep; FILE *fe; fe=fopen("part3.don", "r");//ouverture fichier if (fe == NULL){printf("pb ouv file"); return;} lC = Chargementlistecandidat(fe, lC, &nbC); + fclose(fe); printf("Souhaitez vous modifier les notes de dossier déjà renseignées ?(O/N)\nATTENTION \nCe sera la seule fois où vous pourrez modifier ces notes\n"); scanf("%c", &rep);//on récupère la réponse de la volonté du responsable des adimissions - if (rep == 'O') + while (rep == 'O') { - //fonction de modifs de notes à faire - return; + printf("Quel est le nom du candidat ?\nNom : \t"); + scanf("%s%*c", nom); + printf("Quel est le prénom du candidat ?\nPrénom : \t"); + fgets(prenom, 26, stdin); + prenom[strlen(prenom)-1]='\0'; + printf("Quelle sera la nouvelle note ?\nNote : \t"); + scanf("%f%*c", ¬e); + lC = MajNote(lC, nom, prenom, note); + printf("Souhaitez-vous changer/renseigner une autre note ?\n"); + scanf("%c", &rep); } - //faire le tri des candidats en fonction de leurs noteDoss - //lC=nouveau + maj nbC + printf("Quelle est la note minimale d'admission souhaitée ?\nNote :\t"); scanf("%f", ¬eMin);//on récupère le note minimale requise pour être accepté ou en liste d'attente @@ -227,11 +298,26 @@ void RespAdmin(void)//fonction dédiée au responsable d'admission printf("Quel est le nombre de places disponibles ?\n"); scanf("%d", &nbP);//on récupère le nombre qu'il peut y avoir d'acceptés pour savoir qui sera accepté et qui sera en attente - //appeler fonction qui maj dec du jury - MajDecJury(lC, nbC, nbP); + MajDecJury(lC, nbC, nbP);//fonction qui maj dec du jury + lCAcc = splitAccepted(lC);//la liste des acceptés + + lCW = splitWait(lC);//la liste d'attente + + + FILE *fA; + FILE *fW; + + fA = fopen("partAcc.don", "w");//ouverture du fichier de sauvegarde des acceptés + if (fA == NULL){printf("pb ouv fichier acc\n"); exit(-1);} + + fW = fopen("partWait.don", "w");//ouverture du fichier de sauvegarde de l'attente + if (fW == NULL){printf("pb ouv fichier wait\n"); exit(-1);} + + saveC(lCAcc, fA);//sauvegarde des acceptés + saveC(lCW, fW);//sauvegarde de l'attente - //appeler fonction qui split en deux - //save séparément + fclose(fA); + fclose(fW); } ////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -241,7 +327,7 @@ void AffC(Candidat c) { printf("%d\n", c.nEtu); printf("%s\n%s\n", c.nom, c.prenom); - printf("%.2f\t%.2f\t%.2f\t%.2f\n", c.moymat,c.moyfr, c.moyen, c.moyspe); + printf("%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n", c.moymat,c.moyfr, c.moyen, c.moyspe, c.noteDoss); printf("%d\n", c.nbchx); } @@ -258,7 +344,6 @@ void AffListeCandidat (Listecand l){ if (l == NULL) return; AffC(l->cand); - if (l->cand.lchx == NULL){printf("whybitch");} AffListChoix(l->cand.lchx); AffListeCandidat(l->suivcand); } diff --git a/part3.h b/part3.h index ccfbcbc..43484fb 100644 --- a/part3.h +++ b/part3.h @@ -1,6 +1,6 @@ typedef struct { - char ville[20];//ville choisie - char dptmt[20];//département choisi + char ville[26];//ville choisie + char dptmt[26];//département choisi int dec;//décision du choix int valid;//validation du candidat }Choix; @@ -16,8 +16,8 @@ typedef Maillonchx * Listechx; typedef struct { int nEtu;//numéro d'étudiant - char nom[20];//nom de l'étudiant - char prenom[20];//prénom de l'é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 @@ -53,3 +53,7 @@ void AffCh(Choix c); void AffListeCandidat (Listecand l); void AffListChoix(Listechx l); void MajDecJury(Listecand lC, int nbC, int nbAcc);//mise à jour de la décision du jury +Listecand searchCand(Listecand lC, char *nom, char *prenom);//recherche d'un candidat par son nom et prénom +Listecand MajNote(Listecand lC, char *nom, char *prénom, float newNote);//mise à jour de la note de dossier du candidat +Listecand splitAccepted(Listecand origin);//fonction qui retourne la liste des admis +Listecand splitWait(Listecand origin);//fonction qui retourne la liste d'attente diff --git a/test b/test deleted file mode 100644 index 689c844145641ff2ef706261d3fb653042d9b03a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22040 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