|
|
|
@ -1,13 +1,15 @@
|
|
|
|
|
#include "SAE.h"
|
|
|
|
|
/*
|
|
|
|
|
// ListeAdmission
|
|
|
|
|
|
|
|
|
|
ListeAdmission listenouv(void)
|
|
|
|
|
ListeAdmission listenouvAdm(void)
|
|
|
|
|
{
|
|
|
|
|
ListeAdmission f;
|
|
|
|
|
f = NULL;
|
|
|
|
|
return f;
|
|
|
|
|
ListeAdmission la;
|
|
|
|
|
la = NULL;
|
|
|
|
|
return la;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ListeAdmission adjq(ListeAdmission f, Admission candidat)
|
|
|
|
|
ListeAdmission insererEnTeteAdm(ListeAdmission la, Admission candidat)
|
|
|
|
|
{
|
|
|
|
|
MaillonAdmission *p;
|
|
|
|
|
p = (MaillonAdmission *)malloc(sizeof(MaillonAdmission));
|
|
|
|
@ -17,80 +19,213 @@ ListeAdmission adjq(ListeAdmission f, Admission candidat)
|
|
|
|
|
exit(1);
|
|
|
|
|
}
|
|
|
|
|
p->v = candidat;
|
|
|
|
|
if(vide(f))
|
|
|
|
|
{
|
|
|
|
|
p->suiv = p;
|
|
|
|
|
return p;
|
|
|
|
|
}
|
|
|
|
|
p->suiv = f->suiv;
|
|
|
|
|
f->suiv = p;
|
|
|
|
|
p->suiv = la;
|
|
|
|
|
return p;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ListeAdmission supt(ListeAdmission f)
|
|
|
|
|
ListeAdmission insererAdm(ListeAdmission la, Admission candidat)
|
|
|
|
|
{
|
|
|
|
|
if(la == NULL)
|
|
|
|
|
return insererEnTeteAdm(f, candidat);
|
|
|
|
|
if(candidat.num < la->v.num)
|
|
|
|
|
return insererEnTeteAdm(f, candidat);
|
|
|
|
|
if(candidat.num > la->v.num)
|
|
|
|
|
return la;
|
|
|
|
|
la->suiv = insererAdm(la->suiv, candidat);
|
|
|
|
|
return la;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ListeAdmission supprimerEnTeteAdm(ListeAdmission la)
|
|
|
|
|
{
|
|
|
|
|
MaillonAdmission *aux;
|
|
|
|
|
if(vide(f))
|
|
|
|
|
if(videAdm(la))
|
|
|
|
|
{
|
|
|
|
|
printf("Opérations interdites !!!!\n");
|
|
|
|
|
exit(1);
|
|
|
|
|
}
|
|
|
|
|
if(f->suiv == f)
|
|
|
|
|
{
|
|
|
|
|
free(f);
|
|
|
|
|
return Listenouv();
|
|
|
|
|
}
|
|
|
|
|
aux = f->suiv;
|
|
|
|
|
f->suiv = aux->suiv;
|
|
|
|
|
aux = la
|
|
|
|
|
la = la->suiv;
|
|
|
|
|
free(aux);
|
|
|
|
|
return f;
|
|
|
|
|
return la;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ListeAdmission supprimerAdm(ListeAdmission la, Admission candidat)
|
|
|
|
|
{
|
|
|
|
|
if(videAdm(la))
|
|
|
|
|
return la;
|
|
|
|
|
if(candidat.num < la->v.num)
|
|
|
|
|
return la;
|
|
|
|
|
if(candidat.num == la->v.num)
|
|
|
|
|
return supprimerEnTeteAdm(la);
|
|
|
|
|
la->suiv = supprimerAdm(la->suiv, candidat.num);
|
|
|
|
|
return la;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool vide(ListeAdmission f)
|
|
|
|
|
|
|
|
|
|
bool rechercherAdm(ListeAdmission la, Admission candidat)
|
|
|
|
|
{
|
|
|
|
|
return f == NULL;
|
|
|
|
|
if(videAdm(la))
|
|
|
|
|
return false;
|
|
|
|
|
if(candidat.num < la->v.num)
|
|
|
|
|
return false;
|
|
|
|
|
if(candidat.num == la->v.num)
|
|
|
|
|
return true;
|
|
|
|
|
return rechercherAdm(la->suiv, candidat.num);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Admission tete(ListeAdmission f)
|
|
|
|
|
int TeteAdm(ListeAdmission la)
|
|
|
|
|
{
|
|
|
|
|
if(vide(f))
|
|
|
|
|
if(videAdm(la))
|
|
|
|
|
{
|
|
|
|
|
printf("Opérations interdites !!!!\n");
|
|
|
|
|
exit(1);
|
|
|
|
|
}
|
|
|
|
|
return f->suiv->v;
|
|
|
|
|
return la->v; /* Retourne un candidat
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int longueur(ListeAdmission f)
|
|
|
|
|
bool videAdm(ListeAdmission la)
|
|
|
|
|
{
|
|
|
|
|
int cpt = 1;
|
|
|
|
|
MaillonAdmission *aux;
|
|
|
|
|
if(vide(f))
|
|
|
|
|
return la == NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void afficherAdm(ListeAdmission la)
|
|
|
|
|
{
|
|
|
|
|
while(!videAdm(la))
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
afficherCandidatsAdm(Tete(la));
|
|
|
|
|
la = la->suiv;
|
|
|
|
|
}
|
|
|
|
|
aux = f->suiv;
|
|
|
|
|
while(aux != f)
|
|
|
|
|
printf("\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int longueurAdm(ListeAdmission la)
|
|
|
|
|
{
|
|
|
|
|
int cpt = 0;
|
|
|
|
|
while(!vide(la))
|
|
|
|
|
{
|
|
|
|
|
cpt++;
|
|
|
|
|
aux = aux->suiv;
|
|
|
|
|
la = la->suiv;
|
|
|
|
|
}
|
|
|
|
|
return cpt;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void afficher(ListeAdmission f)
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ListeDepartement
|
|
|
|
|
|
|
|
|
|
ListeDepartement listenouvDpt(void)
|
|
|
|
|
{
|
|
|
|
|
ListeDepartement ld;
|
|
|
|
|
ld = NULL;
|
|
|
|
|
return ld;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ListeDepartement insererEnTeteDpt(ListeDepartement ld, Departement dpt)
|
|
|
|
|
{
|
|
|
|
|
MaillonDepartement *p;
|
|
|
|
|
p = (MaillonDepartement *)malloc(sizeof(MaillonDepartement));
|
|
|
|
|
if(p == NULL)
|
|
|
|
|
{
|
|
|
|
|
printf("Opérations interdites !!!!\n");
|
|
|
|
|
exit(1);
|
|
|
|
|
}
|
|
|
|
|
p->v = dpt;
|
|
|
|
|
p->suiv = ld;
|
|
|
|
|
return p;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ListeDepartement insererDpt(ListeDepartement ld, Departement dpt)
|
|
|
|
|
{
|
|
|
|
|
MaillonAdmission *p=f;
|
|
|
|
|
if(vide(f))
|
|
|
|
|
if(ld == NULL)
|
|
|
|
|
return insererEnTeteDpt(ld, dpt);
|
|
|
|
|
if(strcmp(dpt.departement, ld->v.departement) < 0)
|
|
|
|
|
return insererEnTeteDpt(ld, dpt);
|
|
|
|
|
if(strcmp(dpt.departement, ld->v.departement) = 0)
|
|
|
|
|
return ld;
|
|
|
|
|
ld->suiv = insererDpt(ld->suiv, dpt);
|
|
|
|
|
return ld;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ListeDepartement supprimerEnTeteDpt(ListeDepartement ld)
|
|
|
|
|
{
|
|
|
|
|
MaillonDepartement *aux;
|
|
|
|
|
if(videDpt(ld))
|
|
|
|
|
{
|
|
|
|
|
printf("Opérations interdites !!!!\n");
|
|
|
|
|
exit(1);
|
|
|
|
|
}
|
|
|
|
|
afficherCandidats(f->v);
|
|
|
|
|
while(f->suiv != p)
|
|
|
|
|
aux = ld;
|
|
|
|
|
ld = ld->suiv;
|
|
|
|
|
free(aux);
|
|
|
|
|
return ld;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ListeDepartement supprimerDpt(ListeDepartement ld, Departement dpt)
|
|
|
|
|
{
|
|
|
|
|
if(videDpt(ld))
|
|
|
|
|
return ld;
|
|
|
|
|
if(strcmp(dpt.departement, ld->v.departement) < 0)
|
|
|
|
|
return ld;
|
|
|
|
|
if(strcmp(dpt.departement, ld->v.departement) = 0)
|
|
|
|
|
return supprimerEnTeteDpt(ld);
|
|
|
|
|
ld->suiv = supprimerDpt(ld->suiv, dpt.departement);
|
|
|
|
|
return ld;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool rechercherDpt(ListeDepartement ld, Departement dpt)
|
|
|
|
|
{
|
|
|
|
|
if(videDpt(ld))
|
|
|
|
|
return false;
|
|
|
|
|
if(strcmp(dpt.departement, ld->v.departement) < 0)
|
|
|
|
|
return false;
|
|
|
|
|
if(strcmp(dpt.departement, ld->v.departement) = 0)
|
|
|
|
|
return true;
|
|
|
|
|
return rechercherDpt(ld->suiv, dpt.departement);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int TeteDpt(ListeDepartement ld)
|
|
|
|
|
{
|
|
|
|
|
if(videDpt(ld))
|
|
|
|
|
{
|
|
|
|
|
f = f->suiv;
|
|
|
|
|
afficherCandidats(f->v);
|
|
|
|
|
printf("Opérations interdites !!!!\n");
|
|
|
|
|
exit(1);
|
|
|
|
|
}
|
|
|
|
|
return ld->v; /* Retourne un département
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool videDpt(ListeDepartement ld)
|
|
|
|
|
{
|
|
|
|
|
return ld == NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void afficherDpt(ListeDepartement ld)
|
|
|
|
|
{
|
|
|
|
|
while(!videDpt(ld))
|
|
|
|
|
{
|
|
|
|
|
afficherDepartement(TeteDpt(ld));
|
|
|
|
|
ld = ld->suiv;
|
|
|
|
|
}
|
|
|
|
|
printf("\n");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void afficherDepartement(Departement dpt)
|
|
|
|
|
{
|
|
|
|
|
printf("%s\t%d\t%d\t", dpt.departement, dpt.decisionAdmission, dpt.decisionCandidat);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int longueurDpt(ListeDepartement ld)
|
|
|
|
|
{
|
|
|
|
|
int cpt = 0;
|
|
|
|
|
while(!videDpt(ld))
|
|
|
|
|
{
|
|
|
|
|
cpt++;
|
|
|
|
|
ld = ld->suiv;
|
|
|
|
|
}
|
|
|
|
|
return cpt;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
*/
|