#include #include #include #include "iut.h" //Fonction qui teste si la liste est vide ou non, et renvoie 'Vrai si la liste est vide', sinon 'Faux' Booleen testVide(VilleIUT V){ if(V.ville == NULL) return vrai; return faux; } //chargement Ville+iut int chargement(VilleIUT *tiut[],int tmax){ int i = 0, j=0; int nbDep = 0; VilleIUT V; MaillonDept m; FILE *fe; fe=fopen("ville.don","r"); if(fe==NULL){ printf("Problème d'ouverture du fichier"); return-1; } V = lireVille(fe, &nbDep); while(!feof(fe)){ tiut[i] = (VilleIUT*)malloc(sizeof(VilleIUT)); if(tiut[i]==NULL){ printf("Problème de malloc"); return -3; } *tiut[i] = V; for(j = 0; j < nbDep; j++){ m = lireDep(fe); tiut[i]->ldept = Insertion(tiut[i]->ldept, m.departement, m.nbP, m.resp, m.AouD); } V = lireVille(fe, &nbDep); i++; } fclose(fe); return i; } VilleIUT lireVille(FILE *fe, int *nbDep){ VilleIUT V; V.ldept = NULL; fscanf(fe,"%s %d", V.ville, nbDep); return V; } MaillonDept lireDep(FILE *fe){ MaillonDept m; fscanf(fe,"%s %d %s %c", m.departement, &m.nbP, m.resp, &m.AouD); return m; } ListeD InsertionTete(ListeD ld, char *departement, int nbP,char *resp, char AouD){ MaillonDept *m; m = (MaillonDept*)malloc(sizeof(MaillonDept)); if(m==NULL){ printf("Problème malloc m"); exit(1);} strcpy(m->departement, departement); m->nbP = nbP; strcpy(m->resp, resp); m->AouD = AouD; m->suivant = ld; return m; } ListeD Insertion(ListeD ld, char *departement, int nbP,char *resp, char AouD){ if(ld==NULL) return InsertionTete(ld, departement, nbP, resp, AouD); if(strcmp(ld->departement, departement)<0) return InsertionTete(ld, departement, nbP, resp, AouD); ld->suivant = Insertion(ld->suivant, departement, nbP, resp, AouD); return ld; } //affichage Ville+departement.. void affichage (VilleIUT *tiut[],int n){ int i; for(i=0;iville); affichageListe(tiut[i]->ldept); } } void affichageListe(ListeD ld){ while(ld!=NULL){ printf("%s\t",ld->departement); printf("%d\t",ld->nbP); printf("%s\t",ld->resp); printf("%c\n",ld->AouD); ld = ld->suivant;} } //chargement candidat int chargementcandidat(Candidat *tcandidat[],int tmax){ int i = 0, j=0; int nbChoix = 0; Candidat C; Choix ch; FILE *fe1; fe1=fopen("Candidat.don","r"); if(fe1==NULL){ printf("Problème d'ouverture du fichier Candidat"); return-1; } C = lireCandidat(fe1, &nbChoix); while(!feof(fe1)){ tcandidat[i] = (Candidat*)malloc(sizeof(Candidat)); if(tcandidat[i]==NULL){ printf("Problème de malloc"); return -3; } *tcandidat[i] = C; for(j = 0; j < nbChoix; j++){ ch = lireChoix(fe1); tcandidat[i]->lchoix = InsertionCandidat(tcandidat[i]->lchoix, ch.ville, ch.departement, ch.decision, ch.validation); } C = lireCandidat(fe1, &nbChoix); i++; } fclose(fe1); return i; } Candidat lireCandidat(FILE *fe1, int *nbChoix){ Candidat C; C.lchoix = NULL; fscanf(fe1,"%d %s %s %f %f %f %d", &C.numero, C.nom, C.prenom, &C.note.Francais, &C.note.Maths, &C.note.Anglais, &C.nb_choix); *nbChoix=C.nb_choix; return C; } Choix lireChoix(FILE *fe1){ Choix ch; fscanf(fe1,"%s %s %d %d", ch.ville, ch.departement, &ch.decision, &ch.validation); return ch; } ListeC InsertionTeteCandidat(ListeC ld, char *ville, char *departement, int decision, int validation){ Choix *ch; ch = (Choix*)malloc(sizeof(Choix)); if(ch==NULL){ printf("Problème malloc m"); exit(1);} strcpy(ch->ville, ville); strcpy(ch->departement, departement); ch->decision = decision; ch->validation = validation; ch->suivant = ld; return ch; } ListeC InsertionCandidat(ListeC ld, char *ville, char *departement, int decision, int validation){ if(ld==NULL) return InsertionTeteCandidat(ld, ville, departement, decision, validation); if(strcmp(ld->ville, ville)<0) return InsertionTeteCandidat(ld, ville, departement, decision, validation); ld->suivant = InsertionCandidat(ld->suivant, ville, departement, decision, validation); return ld; } //affichage Candidat+choix void affichageCandidatchoix(Candidat *tcandidat[],int n){ int i; for(i=0;inumero); printf("%s ", tcandidat[i]->nom); printf("%s\t", tcandidat[i]->prenom); printf("%.2f\t", tcandidat[i]->note.Francais); printf("%.2f\t", tcandidat[i]->note.Maths); printf("%.2f\t", tcandidat[i]->note.Anglais); printf("%d\n", tcandidat[i]->nb_choix); affichageListeCandidatchoix(tcandidat[i]->lchoix); } } void affichageListeCandidatchoix(ListeC ld){ while(ld!=NULL){ printf("%s\t",ld->ville); printf("%s\t",ld->departement); printf("%d\t",ld->decision); printf("%d\n",ld->validation); ld = ld->suivant;} }