/** * @file responsable.c * @author Kyllian Chabanon * @brief Fichier contenant les fonctions du responsable de département * */ #include "SAE.h" /** * @brief Renvoie par adresse le département et la ville du département duquel le responsable s'occupe * * @param tiut Tableau des IUT * @param nbVilles Nombre des IUT * @param respVille Ville du responsable * @param respIUT IUT du responsable */ void deptResp(VilleIUT *tiut[], int nbVilles, char respVille[], char respIUT[]) { char nom[30]; printf("Entrez votre nom et votre prénom :\n> "); fgets(nom, 30, stdin); nom[strlen(nom) - 1] = '\0'; for (int i = 0; i < nbVilles; i++) { for (int n = 0; n < longueur(tiut[i]->ldept); n++) { if (strcmp(getResp(tiut[i]->ldept, n), nom) == 0) { strcpy(respVille, tiut[i]->ville); strcpy(respIUT, getDept(tiut[i]->ldept, n)); return; } } } } /** * @brief Charge le tableau des candidats ayant candidatés dans le département du responsable * * @param tetud Tableau des candidats * @param nbCand Nombre de candidats * @param respVille Ville du responsable * @param respIUT IUT du responsable * @param tetudResp Tableau des candidats dans le département du responsable * @return int */ int chargementRespDept(Etudiant *tetud[], int nbCand, char respVille[], char respIUT[], Etudiant *tetudResp[]) { int nb = 0; for (int i = 0; i < nbCand; i++) { for (int n = 0; n < tetud[i]->nbChoix; n++) { if (strcmp(getDeptChoix(tetud[i]->lChoix, n), respIUT) == 0 && strcmp(getVilleChoix(tetud[i]->lChoix, n), respVille) == 0) { tetudResp[nb] = tetud[i]; nb++; } } } return nb; } Etudiant modifStatueCandidat(Etudiant *tetud[], int nbCandidats, float noteMin[], VilleIUT *tiut[], int nbIUT, char respVille[30], char respDept[30]) //! tableau des admis + compteur admis { int posIUT, posDept, nbPlaces; bool trouve; posIUT = rechercheVille(tiut, nbIUT, respVille, &trouve); if (trouve == false) { printf("L'IUT de ce responsable n'existe pas. Veuillez réessayer en changeant de responsable.\n"); return **tetud; } posDept = rechercheDept(tiut[posIUT]->ldept, respDept, &trouve); if (trouve == false) { printf("Le departement de ce responsable n'existe pas. Veuillez réessayer en changeant de responsable.\n"); return **tetud; } for (int i = 0; i < nbCandidats; i++) { if (tetud[i]->tabNotes[maths] >= noteMin[maths] && tetud[i]->tabNotes[francais] >= noteMin[francais] && tetud[i]->tabNotes[anglais] >= noteMin[anglais] && tetud[i]->tabNotes[spe] >= noteMin[spe] && tetud[i]->tabNotes[moy] >= noteMin[moy] && nbCandidatsAdmis(tetud, nbCandidats) <= getNbP(tiut[posIUT]->ldept, posDept)) { printf("test 111111 \n"); printf("nbCandidatsAdmis(tetud, nbCandidats) = %d\n", nbCandidatsAdmis(tetud, nbCandidats)); tetud[i]->lChoix->choix.decisionAdmission = 1; } else if (tetud[i]->tabNotes[maths] >= noteMin[maths] && tetud[i]->tabNotes[francais] >= noteMin[francais] && tetud[i]->tabNotes[anglais] >= noteMin[anglais] && tetud[i]->tabNotes[spe] >= noteMin[spe] && tetud[i]->tabNotes[moy] >= noteMin[moy] && nbCandidatsAdmis(tetud, nbCandidats) > getNbP(tiut[posIUT]->ldept, posDept)) { printf("test 222222 \n"); tetud[i]->lChoix->choix.decisionAdmission = 2; } else { printf("test 333333 \n"); tetud[i]->lChoix->choix.decisionAdmission = -1; } } return **tetud; } int statueCandidat(Etudiant *tetud[], int nbCandidats, Etudiant *tetudAdmis[], Etudiant *tetudAttente[], int nbEtudAdmis, int nbEtudAttente) { int i; for (i = 0; i < nbCandidats; i++) { if (tetud[i]->lChoix->choix.decisionAdmission == 1) { tetudAdmis[nbEtudAdmis] = tetud[i]; nbEtudAdmis++; } else if (tetud[i]->lChoix->choix.decisionAdmission == 2) { tetudAttente[nbEtudAttente] = tetud[i]; nbEtudAttente++; } } afficherCandidats(tetudAdmis, nbEtudAdmis); printf("------------------------\n"); afficherCandidats(tetudAttente, nbEtudAttente); } int nbCandidatsAdmis(Etudiant *tetud[], int nbCandidats) { int nbAdmis = 0; for (int i = 0; i < nbCandidats; i++) { if (tetud[i]->lChoix->choix.decisionAdmission == 1) { nbAdmis++; } } return nbAdmis; } int nbCandidatsRefuses(Etudiant *tetud[], int nbCandidats) { int nbRefuses = 0; for (int i = 0; i < nbCandidats; i++) { if (tetud[i]->lChoix->choix.decisionAdmission == -1) { nbRefuses++; } } return nbRefuses; } int nbCandidatsAttente(Etudiant *tetud[], int nbCandidats) { int nbAttente = 0; for (int i = 0; i < nbCandidats; i++) { if (tetud[i]->lChoix->choix.decisionAdmission == 2) { nbAttente++; } } return nbAttente; } float modifNoteMin(float noteMin[]) { for (int i = 0; i < 5; i++) { printf("Entrez la note minimale pour la matiere %d (0/20, -1 pour sortir) : ", i + 1); // afficher le nom de la matiere du enum scanf("%f", ¬eMin[i]); while (noteMin[i] < 0 || noteMin[i] > 20) { scanf("%f", ¬eMin[i]); if (noteMin[i] == -1) { break; } printf("La note doit être comprise entre 0 et 20 !\n"); } } return *noteMin; } void modificationNbPDeptResp(VilleIUT *tiut[], int nbIUT, char respVille[30], char respDept[30]) { int posIUT, posDept, nbPlaces; bool trouve; posIUT = rechercheVille(tiut, nbIUT, respVille, &trouve); if (trouve == false) { printf("L'IUT de ce responsable n'existe pas. Veuillez réessayer en changeant de responsable.\n"); return; } posDept = rechercheDept(tiut[posIUT]->ldept, respDept, &trouve); if (trouve == false) { printf("Le departement de ce responsable n'existe pas. Veuillez réessayer en changeant de responsable.\n"); return; } printf("Il y a actuellement %d places dans ce département. Entrez le nouveau nombre de places :\n> ", getNbP(tiut[posIUT]->ldept, posDept)); scanf("%d", &nbPlaces); setNbP(tiut[posIUT]->ldept, posDept, nbPlaces); printf("Le nombre de places est bien passé à %d.\n", getNbP(tiut[posIUT]->ldept, posDept)); } int modifNbPlaces(int nbPlaces) { printf("Entrez le nombre de places disponibles : "); scanf("%d", &nbPlaces); return nbPlaces; } void triNote(Etudiant *tetudResp[], int nbCandResp) { int min; while (nbCandResp > 1) { min = plusPetit(tetudResp, nbCandResp); echanger(tetudResp, min, nbCandResp - 1); nbCandResp--; } } void echanger(Etudiant *tetudResp[], int i, int j) { Etudiant *aux; aux = tetudResp[i]; tetudResp[i] = tetudResp[j]; tetudResp[j] = aux; } int plusPetit(Etudiant *tetudResp[], int nbCandResp) { int min = 0; for (int i = 0; i < nbCandResp; i++) { if (tetudResp[i]->tabNotes[4] < tetudResp[min]->tabNotes[4]) { min = i; } } return min; }