From fd10a874a050bf69741fc892bbab154107c6579d Mon Sep 17 00:00:00 2001 From: "antoine.perederii" Date: Thu, 5 Jan 2023 15:50:08 +0100 Subject: [PATCH 1/2] gestion des erreurs de la partie 3 --- SAE.h | 12 ++++++++++++ partie_3.c | 48 +++++++++++++++++++++++------------------------- structures.c | 12 +++++------- 3 files changed, 40 insertions(+), 32 deletions(-) diff --git a/SAE.h b/SAE.h index b464700..401d894 100755 --- a/SAE.h +++ b/SAE.h @@ -45,6 +45,18 @@ void modificationRespDept(VilleIUT *tiut[], int nb); // Partie 3 +Departement lireDpt(FILE *flot, ListeDepartement dpt) +void afficherDept(Departement dpt); +Admission lireCandidat(FILE *flot, ListeAdmission la); +void afficherCandidat(Admission candidat); +ListeAdmission chargerCandidats(char *ficAdmission, char dptResAdmi[30], ListeAdmission la); +void sauvegarderCandidats(ListeAdmission listeCandidats, char dptResAdmi[30]); +void afficherCandidatsAdmis(ListeAdmission listeCandidats); +void afficherCandidatsNonAdmis(ListeAdmission listeCandidats); +void afficherCandidatsAttente(ListeAdmission listeCandidats); +void afficherCandidatsDpt(ListeAdmission listeCandidats); +ListeAdmission MoyenneCandidats(ListeAdmission listeCandidats); + // Liste Admission ListeAdmission listenouvAdm(void); ListeAdmission insererEnTeteAdm(ListeAdmission la, Admission candidat); diff --git a/partie_3.c b/partie_3.c index c2663d2..e8828a3 100755 --- a/partie_3.c +++ b/partie_3.c @@ -1,8 +1,7 @@ #include "SAE.h" -/* -Departement lireDpt(FILE *flot, Admission ListeDepartement) + +Departement lireDept(FILE *flot, ListeDepartement dpt) { - Departement dpt; fscanf(flot, "%s\n%d\n%d\n", dpt.departement, &dpt.decisionAdmission, &dpt.decisionCandidat); return dpt; } @@ -12,41 +11,41 @@ void afficherDpt(Departement dpt) printf("\t%s\t%d\t%d", dpt.departement, dpt.decisionAdmission, dpt.decisionCandidat); } -Admission lireCandidat(FILE *flot, ListeAdmission la) +Admission lireCandidat(FILE *flot, ListeAdmission la, char dptResAdmis[]) { int i = 0; - fscanf(flot, "%d\n", &la->candidat.num); - fgets(candidat.nom, 22, flot); - candidat.nom[strlen(candidat.nom) - 1] = '\0'; - fgets(candidat.prenom, 22, flot); - candidat.prenom[strlen(candidat.prenom) - 1] = '\0'; - fscanf(flot, "%d\t%d\t%d\t%d\n%d\n%s\n", &candidat.tabMatiere[0], &candidat.tabMatiere[1], &candidat.tabMatiere[2], &candidat.tabMatiere[3], &candidat.nbChoix, candidat.ville); - if(candidat.nbChoix == 0) + fscanf(flot, "%d\n", &la->v.num); + fgets(la->v.nom, 22, flot); + la->v.nom[strlen(la->v.nom) - 1] = '\0'; + fgets(la->v.prenom, 22, flot); + la->v.prenom[strlen(la->v.prenom) - 1] = '\0'; + fscanf(flot, "%d\t%d\t%d\t%d\n%d\n%s\n", &la->v.tabMatiere[0], &la->v.tabMatiere[1], &la->v.tabMatiere[2], &la->v.tabMatiere[3], &la->v.nbChoix, la->v.ville); + if(la->v.nbChoix == 0) { listenouv(); - return candidat; + return la->v; } - dpt = lireDpt(flot); - while(!feof(flot) && i < candidat.nbChoix) + ajouterDpt(la->v.ldept, lireDept(flot, la->v.ldept)); + while(!feof(flot) && i < la->v.nbChoix) { - if(strcmp(dpt.departement, dptResAdmi) == 0) + if(strcmp(la->v.ldept, dptResAdmi) == 0) { - candidat.ldept = inserer(candidat, dpt); + la->v.ldept = inserer(la->v, la->v.ldept); } - dpt = lireDpt(flot); + ajouterDpt(la->v.ldept, lireDept(flot, la->v.ldept)); i++; } - return candidat; + return la->v; } -void afficherCandidats(Admission candidat) +void afficherCandidats(ListeAdmission la) { int i; - printf("%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%s\t%s\t%d\t%d", candidat.num, candidat.nom, candidat.prenom, candidat.noteMaths, candidat.noteFrançais, candidat.noteAnglais, candidat.noteSpe, candidat.nbChoix, candidat.ville); - for(i = 0; i < candidat.nbChoix; i++) + printf("%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%s\t%s\t%d\t%d", la->v.num, la->v.nom, la->v.prenom, la->v.tabMatiere[0], la->v.tabMatiere[1], la->v.tabMatiere[2], la->v.tabMatiere[3], la->v.nbChoix, la->v.ville); + for(i = 0; i < la->v.nbChoix; i++) { - afficherDpt(candidat.ldept->v); - ldept = ldept->suiv; + afficherDpt(la->v.ldept->v); + la->v.ldept = la->v.ldept->suiv; } printf("\n"); } @@ -63,7 +62,7 @@ ListeAdmission chargerCandidats(char *ficAdmission, char dptResAdmi[30], ListeAd printf("Erreur d'ouverture du fichier !\n"); exit(1); } - la->v = lireCandidat(flot); + la->v = lireCandidat(flot, la, dptResAdmi); while(!feof(flot)) { listeCandidats = insererCand(listeCandidats, candidat); @@ -225,4 +224,3 @@ int modifNbAdmisMax() scanf("%d", &nbAdmisMax); return nbAdmisMax; } -*/ \ No newline at end of file diff --git a/structures.c b/structures.c index 29b299d..4d4c6cd 100755 --- a/structures.c +++ b/structures.c @@ -1,5 +1,5 @@ #include "SAE.h" -/* + // ListeAdmission ListeAdmission listenouvAdm(void) @@ -43,7 +43,7 @@ ListeAdmission supprimerEnTeteAdm(ListeAdmission la) printf("Opérations interdites !!!!\n"); exit(1); } - aux = la + aux = la; la = la->suiv; free(aux); return la; @@ -80,7 +80,7 @@ int TeteAdm(ListeAdmission la) printf("Opérations interdites !!!!\n"); exit(1); } - return la->v; /* Retourne un candidat + return la->v; /* Retourne un candidat */ } bool videAdm(ListeAdmission la) @@ -194,7 +194,7 @@ int TeteDpt(ListeDepartement ld) printf("Opérations interdites !!!!\n"); exit(1); } - return ld->v; /* Retourne un département + return ld->v; /* Retourne un département */ } bool videDpt(ListeDepartement ld) @@ -226,6 +226,4 @@ int longueurDpt(ListeDepartement ld) ld = ld->suiv; } return cpt; -} - -*/ \ No newline at end of file +} \ No newline at end of file From 460db7854bd8b95632914f41a3efc4bf5c56f8e3 Mon Sep 17 00:00:00 2001 From: "antoine.perederii" Date: Thu, 5 Jan 2023 16:27:45 +0100 Subject: [PATCH 2/2] Encore des erreurs de la partie 3 git add SAE.h partie_3.c structures.c ! --- SAE.h | 4 +-- partie_3.c | 73 +++++++++++++++++++++++++--------------------------- structures.c | 42 +++++++++++++++--------------- 3 files changed, 58 insertions(+), 61 deletions(-) diff --git a/SAE.h b/SAE.h index c209a93..029b24e 100755 --- a/SAE.h +++ b/SAE.h @@ -46,7 +46,7 @@ void modificationRespDept(VilleIUT *tiut[], int nb); // Partie 3 -Departement lireDpt(FILE *flot, ListeDepartement dpt) +Departement lireDpt(FILE *flot, ListeDepartement dpt); void afficherDept(Departement dpt); Admission lireCandidat(FILE *flot, ListeAdmission la); void afficherCandidat(Admission candidat); @@ -67,7 +67,7 @@ bool videAdm(ListeAdmission la); ListeAdmission supprimerEnTeteAdm(ListeAdmission la); ListeAdmission supprimerAdm(ListeAdmission la, Admission candidat); bool rechercheAdm(ListeAdmission la, Admission candidat); -int TeteAdm(ListeAdmission la); +Departement TeteAdm(ListeAdmission la); int longueurAdm(ListeAdmission la); void afficherCandidatsAdm(Admission candidat); diff --git a/partie_3.c b/partie_3.c index e8828a3..0a20991 100755 --- a/partie_3.c +++ b/partie_3.c @@ -30,7 +30,7 @@ Admission lireCandidat(FILE *flot, ListeAdmission la, char dptResAdmis[]) { if(strcmp(la->v.ldept, dptResAdmi) == 0) { - la->v.ldept = inserer(la->v, la->v.ldept); + la->v.ldept = insererDpt(la->v.ldept, la->v.ldept->v.departement); } ajouterDpt(la->v.ldept, lireDept(flot, la->v.ldept)); i++; @@ -62,17 +62,17 @@ ListeAdmission chargerCandidats(char *ficAdmission, char dptResAdmi[30], ListeAd printf("Erreur d'ouverture du fichier !\n"); exit(1); } - la->v = lireCandidat(flot, la, dptResAdmi); + insererAdm(la, lireCandidat(flot, la, dptResAdmi)); while(!feof(flot)) { - listeCandidats = insererCand(listeCandidats, candidat); - candidat = lireCandidat(flot); + la = insererCand(la, la->v); + la->v = lireCandidat(flot, la, dptResAdmi); } fclose(flot); - return listeCandidats; + return la; } -void sauvegarderCandidats(ListeAdmission listeCandidats, char dptResAdmi[30]) +void sauvegarderCandidats(ListeAdmission la, char dptResAdmi[30]) { FILE *flot; flot=fopen("admissionInfo.txt", "w"); @@ -81,74 +81,71 @@ void sauvegarderCandidats(ListeAdmission listeCandidats, char dptResAdmi[30]) printf("Erreur d'ouverture du fichier !\n"); exit(1); } - while(! videCand(listeCandidats)) + while(! videAdm(la)) { - fprintf(flot, "%d\n%s\n%s\n%d\t%d\t%d\t%d\n%d\n%s\n", listeCandidats->v.num, listeCandidats->v.nom, listeCandidats->v.prenom, listeCandidats->v.tabMatiere[0], listeCandidats->v.tabMatiere[1], listeCandidats->v.tabMatiere[2], listeCandidats->v.tabMatiere[3], listeCandidats->v.nbChoix, listeCandidats->v.ville); - while(! videDpt(listeCandidats->v.ldept)) + fprintf(flot, "%d\n%s\n%s\n%d\t%d\t%d\t%d\n%d\n%s\n", la->v.num, la->v.nom, la->v.prenom, la->v.tabMatiere[0], la->v.tabMatiere[1], la->v.tabMatiere[2], la->v.tabMatiere[3], la->v.nbChoix, la->v.ville); + while(! videDpt(la->v.ldept)) { - fprintf(flot, "%s\n%d\n%d\n", listeCandidats->v.ldept->v.departement, listeCandidats->v.ldept->v.decisionAdmission, listeCandidats->v.ldept->v.decisionCandidat); - listeCandidats->v.ldept = listeCandidats->v.ldept->suiv; + fprintf(flot, "%s\n%d\n%d\n", la->v.ldept->v.departement, la->v.ldept->v.decisionAdmission, la->v.ldept->v.decisionCandidat); + la->v.ldept = la->v.ldept->suiv; } - listeCandidats = listeCandidats->suiv; + la = la->suiv; } fclose(flot); } -void afficherCandidatsAdmis(ListeAdmission listeCandidats) +void afficherCandidatsAdmis(ListeAdmission la) { - while(! videCand(listeCandidats)) + while(! videCand(la->v.ldept)) { - if(listeCandidats->v.admis == 1) + if(la->v.ldept->v.decisionAdmission == 1) { - afficherCandidats(listeCandidats->v); + afficherCandidats(la); } - listeCandidats = listeCandidats->suiv; + la->v.ldept = la->v.ldept->suiv; } } -void afficherCandidatsNonAdmis(ListeAdmission listeCandidats) +void afficherCandidatsNonAdmis(ListeAdmission la) { - while(! videCand(listeCandidats)) + while(! videCand(la->v.ldept)) { - if(listeCandidats->v.admis == 0) + if(la->v.ldept->v.decisionAdmission == 0) { - afficherCandidats(listeCandidats->v); + afficherCandidats(la); } - listeCandidats = listeCandidats->suiv; } } -void afficherCandidatsAttente(ListeAdmission listeCandidats) +void afficherCandidatsAttente(ListeAdmission la) { - while(! videCand(listeCandidats)) + while(! videCand(la->v.ldept)) { - if(listeCandidats->v.admis == 2) + if(la->v.ldept->v.decisionAdmission == 2) { - afficherCandidats(listeCandidats->v); + afficherCandidats(la); } - listeCandidats = listeCandidats->suiv; + la = la->suiv; } } -void afficherCandidatsDpt(ListeAdmission listeCandidats) +void afficherCandidatsDpt(ListeAdmission la) { - while(! videCand(listeCandidats)) + while(! videAdm(la->v.ldept)) { - afficherCandidats(listeCandidats->v); - listeCandidats = listeCandidats->suiv; + afficherCandidats(la); + la = la->suiv; } } -ListeAdmission MoyenneCandidats(ListeAdmission listeCandidats) +ListeAdmission MoyenneCandidats(ListeAdmission la) { - ListeAdmission listeMoyenne = listeNouvCand(); - while(! videCand(listeCandidats)) + while(! videAdm(la)) { - listeCandidats->v.moyenne = (listeCandidats->v.noteMaths + listeCandidats->v.noteFrançais + listeCandidats->v.noteAnglais + listeCandidats->v.noteSpe) / 4; - listeMoyenne = insererCand(listeMoyenne, listeCandidats->v); - listeCandidats = listeCandidats->suiv; + la->v.tabMatiere[4] = (la->v.tabMatiere[0] + la->v.tabMatiere[1] + la->v.tabMatiere[2] + la->v.tabMatiere[3]) / 4; + la = la->suiv; } - return listeMoyenne; + return la; } // Comment definir la note sur 20 mise lors de l'etude du dossier ? diff --git a/structures.c b/structures.c index 4d4c6cd..baf9fce 100755 --- a/structures.c +++ b/structures.c @@ -26,9 +26,9 @@ ListeAdmission insererEnTeteAdm(ListeAdmission la, Admission candidat) ListeAdmission insererAdm(ListeAdmission la, Admission candidat) { if(la == NULL) - return insererEnTeteAdm(f, candidat); + return insererEnTeteAdm(la, candidat); if(candidat.num < la->v.num) - return insererEnTeteAdm(f, candidat); + return insererEnTeteAdm(la, candidat); if(candidat.num > la->v.num) return la; la->suiv = insererAdm(la->suiv, candidat); @@ -57,7 +57,7 @@ ListeAdmission supprimerAdm(ListeAdmission la, Admission candidat) return la; if(candidat.num == la->v.num) return supprimerEnTeteAdm(la); - la->suiv = supprimerAdm(la->suiv, candidat.num); + la->suiv = supprimerAdm(la->suiv, la->v); return la; } @@ -70,10 +70,10 @@ bool rechercherAdm(ListeAdmission la, Admission candidat) return false; if(candidat.num == la->v.num) return true; - return rechercherAdm(la->suiv, candidat.num); + return rechercherAdm(la->suiv, la->v); } -int TeteAdm(ListeAdmission la) +Admission TeteAdm(ListeAdmission la) { if(videAdm(la)) { @@ -92,7 +92,7 @@ void afficherAdm(ListeAdmission la) { while(!videAdm(la)) { - afficherCandidatsAdm(Tete(la)); + afficherCandidatsAdm(TeteAdm(la)); la = la->suiv; } printf("\n"); @@ -101,7 +101,7 @@ void afficherAdm(ListeAdmission la) int longueurAdm(ListeAdmission la) { int cpt = 0; - while(!vide(la)) + while(!videAdm(la)) { cpt++; la = la->suiv; @@ -111,8 +111,8 @@ int longueurAdm(ListeAdmission la) void afficherCandidatsAdm(Admission candidat) { - printf("%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%s\t%s\t%d\t%d", candidat.num, candidat.nom, candidat.prenom, candidat.noteMaths, candidat.noteFrançais, candidat.noteAnglais, candidat.noteSpe, candidat.nbChoix, candidat.ville); - afficherDpt(candidat.ListeDepartement); + printf("%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%s\t%s\t%d\t%d", candidat.num, candidat.nom, candidat.prenom, candidat.tabMatiere[0], candidat.tabMatiere[1], candidat.tabMatiere[2], candidat.tabMatiere[3], candidat.nbChoix, candidat.ville); + afficherDpt(candidat.ldept); } // ListeDepartement @@ -138,13 +138,13 @@ ListeDepartement insererEnTeteDpt(ListeDepartement ld, Departement dpt) return p; } -ListeDepartement insererDpt(ListeDepartement ld, Departement dpt) +ListeDepartement insererDpt(ListeDepartement ld, char dpt) { if(ld == NULL) return insererEnTeteDpt(ld, dpt); - if(strcmp(dpt.departement, ld->v.departement) < 0) + if(strcmp(dpt, ld->v.departement) < 0) return insererEnTeteDpt(ld, dpt); - if(strcmp(dpt.departement, ld->v.departement) = 0) + if(strcmp(dpt, ld->v.departement) = 0) return ld; ld->suiv = insererDpt(ld->suiv, dpt); return ld; @@ -164,30 +164,30 @@ ListeDepartement supprimerEnTeteDpt(ListeDepartement ld) return ld; } -ListeDepartement supprimerDpt(ListeDepartement ld, Departement dpt) +ListeDepartement supprimerDpt(ListeDepartement ld, char dpt) { if(videDpt(ld)) return ld; - if(strcmp(dpt.departement, ld->v.departement) < 0) + if(strcmp(dpt, ld->v.departement) < 0) return ld; - if(strcmp(dpt.departement, ld->v.departement) = 0) + if(strcmp(dpt, ld->v.departement) = 0) return supprimerEnTeteDpt(ld); - ld->suiv = supprimerDpt(ld->suiv, dpt.departement); + ld->suiv = supprimerDpt(ld->suiv, dpt); return ld; } -bool rechercherDpt(ListeDepartement ld, Departement dpt) +bool rechercherDpt(ListeDepartement ld, char dpt) { if(videDpt(ld)) return false; - if(strcmp(dpt.departement, ld->v.departement) < 0) + if(strcmp(dpt, ld->v.departement) < 0) return false; - if(strcmp(dpt.departement, ld->v.departement) = 0) + if(strcmp(dpt, ld->v.departement) = 0) return true; - return rechercherDpt(ld->suiv, dpt.departement); + return rechercherDpt(ld->suiv, dpt); } -int TeteDpt(ListeDepartement ld) +Departement TeteDpt(ListeDepartement ld) { if(videDpt(ld)) {