7#include "../IV/quatre.c"
12 for(i=0; i<nbCandidats; i++) {
14 + (liste[i]->moyenneFrancais)*10
16 + (liste[i]->moyenneSpecialite)*16)/36;
30 if(listeTriee == NULL) {
35 for(i=0; i<nbCandidats; i++) {
36 memcpy(&listeTriee[i], &liste[i],
sizeof(
Candidat*));
41 for(i=0; i<nbCandidats; i++) {
45 candidature = candidatures[j];
47 if(strcasecmp(candidature->
ville, searchIUT) == 0) {
48 if(strcasecmp(candidature->
departement, searchDept) == 0) {
51 strcpy(decision,
"en cours de traitement");
54 strcpy(decision,
"admis");
57 strcpy(decision,
"refusé");
60 strcpy(decision,
"sur liste d'attente");
63 strcpy(decision,
"inconnu");
69 strcpy(validation,
"n'a pas encore décidé");
72 strcpy(validation,
"refuse la proposition");
75 strcpy(validation,
"accepte");
78 strcpy(validation,
"inconnu");
82 printf(
"\n\e[4;37mCandidature de '%s %s' pour le département '%s' à l'IUT '%s' :\n\e[0m"
83 " - Décision du département : %s,\n - Décision du candidat : %s,\n - Note globale : %.2f\n\n",
84 listeTriee[i]->nom, listeTriee[i]->prenom, candidature->
departement, candidature->
ville, decision, validation, listeTriee[i]->
noteGlobale);
95 int n1 = middle - start + 1;
96 int n2 = end - middle;
99 for (i = 0; i < n1; i++)
100 left[i] = liste[start + i];
101 for (j = 0; j < n2; j++)
102 right[j] = liste[middle + 1 + j];
106 while (i < n1 && j < n2) {
107 if (left[i]->noteGlobale >= right[j]->noteGlobale)
108 liste[k++] = left[i++];
110 liste[k++] = right[j++];
114 liste[k++] = left[i++];
116 liste[k++] = right[j++];
121 int middle = (start + end) / 2;
124 merge(liste, start, middle, end);
129 printf(
"\tCandidat n°%d, '%s %s' :"
130 "\n\t - Note globale : %.2f\n\n",
136 int i, j, k, nbCandidatsMatch = 0, nbAdmis=0, nbAttente=0, nbRefuse=0;
137 char dept[
LEN_MAX], ville[
LEN_MAX], fNameAdmis[100], fNameAttente[100];
138 FILE* fAdmis, *fAttente;
147 Candidat listeAdmis[nbCandidatsAccept], listeAttente[nbCandidatsAccept], listeRefuses[nbCandidatsAccept];
149 strcpy(dept,
"Informatique");
150 strcpy(ville,
"Clermont-Ferrand");
152 if(checkQueue == 1) {
156 printf(
"\n\n\e[4;37mCandidats acceptés :\e[0m\n\n");
158 for(i=0; i<nbCandidatsAccept; i++) {
163 printf(
"\tCandidat '%s %s' :"
164 "\n\t - Note globale : %.2f\n\n",
169 if(strcmp(candidat->
nom,
"") != 0 && strcmp(candidat->
prenom,
"") != 0) {
170 for(j=0; j<nbCandidats; j++) {
171 if(strcmp(liste[j]->nom, candidat->
nom) == 0 && strcmp(liste[j]->prenom, candidat->
prenom)) {
174 if(candidatures[k]->ville == ville
175 && candidatures[k]->departement == dept) {
184 printf(
"\e[1;32m%d candidats ont été admis depuis la file d'attente.\n\n\e[0m",
188 printf(
"\n\e[1;32mAucun candidat n'a été admis puisque la file d'attente est vide.\n\n\e[0m");
192 for(i=0; i<nbCandidats; i++) {
196 candidature = candidatures[j];
198 if(strcasecmp(candidature->
ville, ville) == 0)
199 if(strcasecmp(candidature->
departement, dept) == 0)
201 listeCandidatsMatch[nbCandidatsMatch++] = liste[i];
208 for(i=0; i<nbCandidatsMatch; i++) {
209 if(listeCandidatsMatch[i]->noteGlobale >= noteMini) {
210 if(nbAdmis < nbCandidatsAccept) {
212 if(strcasecmp(listeCandidatsMatch[i]->listeCandidatures[j]->ville, ville) == 0)
213 if(strcasecmp(listeCandidatsMatch[i]->listeCandidatures[j]->departement, dept) == 0)
216 listeAdmis[nbAdmis++] = *listeCandidatsMatch[i];
219 if(strcasecmp(listeCandidatsMatch[i]->listeCandidatures[j]->ville, ville) == 0)
220 if(strcasecmp(listeCandidatsMatch[i]->listeCandidatures[j]->departement, dept) == 0)
223 listeAttente[nbAttente++] = *listeCandidatsMatch[i];
227 if(strcasecmp(listeCandidatsMatch[i]->listeCandidatures[j]->ville, ville) == 0)
228 if(strcasecmp(listeCandidatsMatch[i]->listeCandidatures[j]->departement, dept) == 0)
231 listeRefuses[nbRefuse++] = *listeCandidatsMatch[i];
235 strcpy(fNameAdmis,
"donnees/");
236 strcat(fNameAdmis, ville);
237 strcat(fNameAdmis,
"_");
238 strcat(fNameAdmis, dept);
239 strcat(fNameAdmis,
"_Admis.don");
241 fAdmis = fopen(fNameAdmis,
"w");
249 fprintf(fAdmis,
"%d\n", nbAdmis);
251 printf(
"\n\n\e[4;37mCandidats acceptés :\e[0m\n\n");
252 for(i=0; i<nbAdmis; i++) {
256 fprintf(fAdmis,
"%s\n%s\n%.2f %.2f %.2f %.2f %.2f\n",
257 listeAdmis[i].nom, listeAdmis[i].prenom,
258 listeAdmis[i].moyenneMath, listeAdmis[i].moyenneFrancais,
259 listeAdmis[i].moyenneAnglais, listeAdmis[i].moyenneSpecialite,
260 listeAdmis[i].noteGlobale);
266 printf(
"\tAucun candidat accepté.\n\n");
268 strcpy(fNameAttente,
"donnees/");
269 strcat(fNameAttente, ville);
270 strcat(fNameAttente,
"_");
271 strcat(fNameAttente, dept);
272 strcat(fNameAttente,
"_Attente.don");
274 fAttente = fopen(fNameAttente,
"w");
276 if(fAttente == NULL) {
282 fprintf(fAttente,
"%d\n", nbAttente);
284 printf(
"\e[4;37mCandidats en liste d'attente :\e[0m\n\n");
285 for(i=0; i<nbAttente; i++) {
289 fprintf(fAttente,
"%s\n%s\n%.2f %.2f %.2f %.2f %.2f\n",
290 listeAttente[i].nom, listeAttente[i].prenom,
291 listeAttente[i].moyenneMath, listeAttente[i].moyenneFrancais,
292 listeAttente[i].moyenneAnglais, listeAttente[i].moyenneSpecialite,
293 listeAttente[i].noteGlobale);
299 printf(
"\tAucun candidat en liste d'attente.\n\n");
301 printf(
"\e[4;37mCandidats refusés :\e[0m\n\n");
302 for(i=0; i<nbRefuse; i++) {
308 printf(
"\tAucun candidat refusé.\n\n");
310 printf(
"\e[1;32m%d candidats ont été admis, %d mis en file d'attente et %d refusés.\n\n\e[0m",
311 nbAdmis, nbAttente, nbRefuse);
313 free(listeCandidatsMatch);
int compareCandidats(const void *p1, const void *p2)
Compare deux candidats suivant l'ordre alphabetique.
FileAttente * lireCandidatsAttente(char *dept, char *ville)
CandidatTraite defiler(FileAttente *file)
void ajouterCandidatAdmis(char *dept, char *ville, CandidatTraite *candidat)
void ecrireCandidatsAttente(char *dept, char *ville, FileAttente *file)
ListeCandidatures listeCandidatures
char departement[LEN_MAX]
Candidat ** ListeCandidats
void merge(ListeCandidats liste, int start, int middle, int end)
Fonction de tri dichotomique.
void afficherCandidaturesByDept(ListeCandidats liste, int nbCandidats, char *searchIUT, char *searchDept)
Affiche les candidatures pour un seul département dans un IUT.
void afficherCandidatTraite(Candidat candidat)
Affiche les information d'un candidat.
void traiterCandidatures(ListeCandidats liste, int nbCandidats, int nbCandidatsAccept, float noteMini, int checkQueue)
Permet de traiter les candidatures et met les candidats dans des fichiers txt suivant s'ils sont admi...
void triDichotomiqueFusion(ListeCandidats liste, int start, int end)
Algorithme de tri dichotomique.
void calculerNoteGlobale(ListeCandidats liste, int nbCandidats)
Calcul la note globale en fonction des coéfficients prédéfinis.