Ajout fclose manquant + passage de afficherCandidatures en recursif + ajout de checkCandidature + correction du realloc de ajouterCandidat

master
Alix JEUDI--LEMOINE 2 years ago
parent 7dcf4bd799
commit 25297d534d

@ -41,7 +41,7 @@ Candidature* creerCandidature(void) {
} }
void ajouterCandidat(ListeCandidats* listePointer, int* nbCandidats, Candidat* candidat) { void ajouterCandidat(ListeCandidats* listePointer, int* nbCandidats, Candidat* candidat) {
ListeCandidats listeNew = (ListeCandidats) realloc(*listePointer, (*nbCandidats+2)*sizeof(Candidat*)); ListeCandidats listeNew = (ListeCandidats) realloc(*listePointer, (*nbCandidats+1)*sizeof(Candidat*));
if(listeNew == NULL) { if(listeNew == NULL) {
perror("realloc"); perror("realloc");
@ -61,6 +61,16 @@ void ajouterCandidature(Candidat* candidat, Candidature* candidature) {
candidat->nbCandidatures+=1; candidat->nbCandidatures+=1;
} }
int checkCandidature(Candidat* candidat, Candidature candid) {
int nbCandidatures = candidat->nbCandidatures;
for(int i=0; i<nbCandidatures; i++)
if(strcmp(candidat->listeCandidatures[i]->ville, candid.ville) == 0)
if(strcmp(candidat->listeCandidatures[i]->departement, candid.departement) == 0)
return -1;
return 0;
}
void afficherListeCandidats(ListeCandidats liste, int nbCandidats) { void afficherListeCandidats(ListeCandidats liste, int nbCandidats) {
ListeCandidats liste2 = (ListeCandidats) malloc(nbCandidats*sizeof(Candidat*)); ListeCandidats liste2 = (ListeCandidats) malloc(nbCandidats*sizeof(Candidat*));
@ -94,7 +104,52 @@ void afficherCandidat(Candidat* candidat) {
candidat->nbCandidatures); candidat->nbCandidatures);
} }
void afficherCandidatures(Candidat* candidat) { void afficherCandidatures(ListeCandidatures candidatures, int nbCandidatures) {
if(nbCandidatures == 0) return;
char decision[LEN_MAX], validation[LEN_MAX];
Candidature* candidature = candidatures[nbCandidatures-1];
switch (candidature->decision) {
case 0:
strcpy(decision, "en cours de traitement");
break;
case 1:
strcpy(decision, "admis");
break;
case -1:
strcpy(decision, "refusé");
break;
case 2:
strcpy(decision, "sur liste d'attente");
break;
default:
break;
}
switch (candidature->validation) {
case 0:
strcpy(validation, "n'a pas encore décidé");
break;
case 1:
strcpy(validation, "refuse la proposition");
break;
case -1:
strcpy(validation, "accepte");
break;
default:
break;
}
printf("Candidature pour le département '%s' à l'IUT '%s' : \n"
" - Décision du département : %s,\n - Décision du candidat : %s\n\n",
candidature->departement, candidature->ville, decision, validation);
afficherCandidatures(candidatures, nbCandidatures-1);
}
/*
void afficherCandidatures_(Candidat* candidat) {
int nbCandidatures = candidat->nbCandidatures; int nbCandidatures = candidat->nbCandidatures;
for(int i=0; i<nbCandidatures; i++) { for(int i=0; i<nbCandidatures; i++) {
@ -136,7 +191,10 @@ void afficherCandidatures(Candidat* candidat) {
" - Décision du département : %s,\n - Décision du candidat : %s\n\n", " - Décision du département : %s,\n - Décision du candidat : %s\n\n",
candidature->departement, candidature->ville, decision, validation); candidature->departement, candidature->ville, decision, validation);
} }
}
if(nbCandidatures == 0)
fprintf(stderr, "\e[0;91mErreur : vous n'avez aucune candidature en cours, merci de réessayer plus tard.\n\e[0m");
}*/
ListeCandidats readCandidats(int* nbCandidats) { ListeCandidats readCandidats(int* nbCandidats) {
FILE *fe = fopen("donnees/candidats.don", "r"); FILE *fe = fopen("donnees/candidats.don", "r");
@ -235,6 +293,8 @@ int saveCandidats(ListeCandidats liste, int nbCandidats) {
candidature->decision, candidature->validation); candidature->decision, candidature->validation);
} }
} }
fclose(fe);
return 0; return 0;
} }
@ -303,5 +363,5 @@ void test2(void) {
ajouterCandidature(liste[2], candid); ajouterCandidature(liste[2], candid);
afficherListeCandidats(liste, nbCandidats); afficherListeCandidats(liste, nbCandidats);
afficherCandidatures(liste[2]); //afficherCandidatures(liste[2]);
} }
Loading…
Cancel
Save