You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

228 lines
4.6 KiB

#include "SAE.h"
// ListeAdmission
ListeAdmission listenouvAdm(void)
{
ListeAdmission la;
la = NULL;
return la;
}
ListeAdmission insererEnTeteAdm(ListeAdmission la, int num)
{
MaillonAdmission *p;
p = (MaillonAdmission *)malloc(sizeof(MaillonAdmission));
if (p == NULL)
{
printf("Opérations interdites !!!!\n");
exit(1);
}
p->v = candidat;
p->suiv = la;
return p;
}
ListeAdmission insererAdm(ListeAdmission la, Admission candidat)
{
if (la == NULL)
return insererEnTeteAdm(la, candidat);
if (candidat.num < la->v.num)
return insererEnTeteAdm(la, candidat);
if (candidat.num > la->v.num)
return la;
la->suiv = insererAdm(la->suiv, candidat);
return la;
}
ListeAdmission supprimerEnTeteAdm(ListeAdmission la)
{
MaillonAdmission *aux;
if (videAdm(la))
{
printf("Opérations interdites !!!!\n");
exit(1);
}
aux = la;
la = la->suiv;
free(aux);
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, la->v);
return la;
}
bool rechercherAdm(ListeAdmission la, Admission candidat)
{
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, la->v);
}
Admission TeteAdm(ListeAdmission la)
{
if (videAdm(la))
{
printf("Opérations interdites !!!!\n");
exit(1);
}
return la->v; /* Retourne un candidat */
}
bool videAdm(ListeAdmission la)
{
return la == NULL;
}
void afficherAdm(ListeAdmission la)
{
while (!videAdm(la))
{
afficherCandidatsAdm(TeteAdm(la));
la = la->suiv;
}
printf("\n");
}
int longueurAdm(ListeAdmission la)
{
int cpt = 0;
while (!videAdm(la))
{
cpt++;
la = la->suiv;
}
return cpt;
}
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.tabMatiere[0], candidat.tabMatiere[1], candidat.tabMatiere[2], candidat.tabMatiere[3], candidat.nbChoix, candidat.ville);
afficherDpt(candidat.ldept);
}
// 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, char dpt)
{
if (ld == NULL)
return insererEnTeteDpt(ld, dpt);
if (strcmp(dpt, ld->v.departement) < 0)
return insererEnTeteDpt(ld, dpt);
if (strcmp(dpt, 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);
}
aux = ld;
ld = ld->suiv;
free(aux);
return ld;
}
ListeDepartement supprimerDpt(ListeDepartement ld, char dpt)
{
if (videDpt(ld))
return ld;
if (strcmp(dpt, ld->v.departement) < 0)
return ld;
if (strcmp(dpt, ld->v.departement) = 0)
return supprimerEnTeteDpt(ld);
ld->suiv = supprimerDpt(ld->suiv, dpt);
return ld;
}
bool rechercherDpt(ListeDepartement ld, char dpt)
{
if (videDpt(ld))
return false;
if (strcmp(dpt, ld->v.departement) < 0)
return false;
if (strcmp(dpt, ld->v.departement) = 0)
return true;
return rechercherDpt(ld->suiv, dpt);
}
Departement TeteDpt(ListeDepartement ld)
{
if (videDpt(ld))
{
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;
}