#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
int n;//n est le nombre des notes pour chaque etudiant-variable globale-
struct date
{
int jj;
int mm;
int aa;
};
typedef struct date DATE;
struct etudiant
{
int matricule;
char nom[20];
char prenom[20];
DATE date_naiss;
float tab_note[10];
float moyenne;
};
typedef struct etudiant ETUDIANT;
struct Element
{
ETUDIANT info;
struct Element *suiv;
};
typedef struct Element *liste;
int controle_date(int a,int b,int c)
{
int mois[12];
mois[0]=31;
mois[8]=30;
mois[2]=31;
mois[4]=31;
mois[6]=31;
mois[7]=31;
mois[9]=31;
mois[11]=31;
mois[3]=30;
mois[10]=30;
mois[1]=30;
mois[5]=30;
if(c%4==0)
mois[1]=29;
else
mois[1]=28;
if((b-1<0)||(b-1>11))
return(0);
if ((a>mois[b+1])||(a<1))
return(0);
return(1);
}
float remplir(float t[20])
{
float moyn=0;
do
{
printf("\nentrer le nombre des notes qui doit etre superieur ou egale a 1\n");
scanf("%d",&n);
}
while(n<1);
for(int i=0;i<n;i++)
{
printf("\nentrer la note de la martiere -%d-\n",i);
scanf("%f",&t[i]);
moyn=moyn+t[i];
}
moyn=moyn/n;
return(moyn);
}
void saisie_etudiant(ETUDIANT *etud)
{
do
{
printf("entrer le numero de la matricule qui doit etre >0\n");
scanf("%d",&(*etud).matricule);
}
while(etud->matricule<=0);
printf("\nentrer le nom\n");
scanf("%s",etud->nom);
printf("\nentrer le prenom\n");
scanf("%s",etud->prenom);
do
{
printf("\nentrer la jour de la date de naissance\n");
scanf("%d",&(*etud).date_naiss.jj);
printf("\nentrer le mois de la date de naissance\n");
scanf("%d",&(*etud).date_naiss.mm);
printf("\nentrer l'anné de la date de naissance\n");
scanf("%d",&(*etud).date_naiss.aa);
}
while(controle_date(etud->date_naiss.jj,etud->date_naiss.mm,etud->date_naiss.aa)<0);
etud->moyenne=remplir(etud->tab_note);
}
void affiche_etudiant(ETUDIANT etud)
{
printf("\nla matricule est :\n");
printf("%d",etud.matricule);
printf("\nle nom est :\n");
printf("%s",etud.nom);
printf("\nle prenom est :\n");
printf("%s",etud.prenom);
printf("\nla date de naissance est :\n");
printf("\nle jour est :%d",etud.date_naiss.jj);
printf("\n le mois est :%d",etud.date_naiss.mm);
printf("\n l'anne est :%d",etud.date_naiss.aa);
printf("\nles notes sont :\n");
for(int i=0;i<n;i++)
printf("la note de la matiere -%d-est %f\n",i,etud.tab_note[i]);
printf("\nla moyenne est :\n");
printf("%f",etud.moyenne);
}
//creer liste
liste creer_liste()//creer une liste consiste a metre la tete a NULL
{
return(NULL);
}
// ajouter un element au debut de la liste
liste ajout_debut(liste tete)
{
//allouer(p);
liste p;
p=(liste)malloc(sizeof(liste));
//remplissage de p
saisie_etudiant(&(p->info));
//chainage
p->suiv=tete;
return(p);
}
//ajouter a la fin de la liste
liste ajout_fin(liste tete)
{
//allouer(p);
liste p,pp,ps;
ps=tete;
pp=NULL;
//pp va pointer sur l'element l'avant dernier
while(ps!=NULL)//rechercher du dernier element
{
pp=ps;
ps=ps->suiv;
}
//allocation de p
p=(liste)malloc(sizeof(liste));
//remplissage de p
saisie_etudiant(&(p->info));
//chainage
p->suiv=NULL;
if (pp==NULL)//si pp=NULL alors que la liste est initialement vide,l'ajout va etre eeffectue au debut de la liste
return (p);//on retourne alors p qui sera parsuite la tete de la liste
else
pp->suiv=p;
return(tete);
}
//recherche d'un element dans la liste
int recherche(liste tete)
{
liste p;
p=tete;
int cherch;
do
{
printf("entrer une matricule matricule non nulle de l'etudiant a rechercher");
scanf("%d",&cherch);
}
while(cherch<1);
while((p->info.matricule!=cherch)&&(p!=NULL))//recherche du mot dans la liste
p=p->suiv;
if(p==NULL)
//si pp=NULL alors que le mot cle n'existe pas
return(-1);
return(0);
}
//tri de la liste (tri alphabetique)
liste precedent(liste p,int m)//cette fonction cherche le precedent grace a une matricule donné
{
liste pp,ps;
ps=p;
pp=NULL;
while((ps!=NULL)&&(ps->info.matricule<m))
{
pp=ps;
ps=ps->suiv;
}
return(pp);
}
liste insertion(liste ord,liste p)//cette fonction insert un étudiant dans sa bonne position afin de garder la nuvelle liste trier
{
liste prec;
prec=precedent(ord,p->info.matricule) ;
if (prec==NULL)
{
p->suiv=ord;
ord=p;
}
else
{
p->suiv=prec->suiv;
prec->suiv=p;
}
return(ord);
}
liste tri_insertion_chaine(liste tete)//tri de la liste
{
liste p,aux,ord;
ord=NULL;
aux=tete;
while (aux!=NULL)
{
p=aux;
aux=aux->suiv;
ord=insertion(ord,p);
}
return(ord);
}
//tri de la liste (tri numerique)
liste precedent2(liste p,float m)
{
liste pp,ps;
ps=p;
pp=NULL;
while((ps!=NULL)&&(ps->info.moyenne<m))
{
pp=ps;
ps=ps->suiv;
}
return(pp);
}
liste insertion2(liste ord,liste p)
{
liste prec;
prec=precedent2(ord,p->info.moyenne) ;
if (prec==NULL)
{
p->suiv=ord;
ord=p;
}
else
{
p->suiv=prec->suiv;
prec->suiv=p;
}
return(ord);
}
liste tri_insertion_numerique(liste tete)//cette tri est comme la tri precedante mais son critere de tri est la moyenne
{
liste p,aux,ord;
ord=NULL;
aux=tete;
while (aux!=NULL)
{
p=aux;
aux=aux->suiv;
ord=insertion2(ord,p);
}
return(ord);
}
//affichage des etudiant qui ont le meme nom
liste r_list_nom(liste tete)
{
liste p,ps,psave;
p=tri_insertion_chaine(tete);//tout d'abord on effectue une tri sur la liste
psave=p;//apres la tri de la liste on aura besoin d'une variable auxiliaire qui va garder la nouvelle tete de la liste et qui sera la valeur de retour de la fonction
int i=1;
printf("la %d eme ensemble des etudiant qui ont le meme noms :\n",i);//on affiche la premiere ensemble
printf("%d\n",p->info.matricule);
ps=p;
p=p->suiv;
while (p!=NULL)
{
if(p->info.matricule!=ps->info.matricule)//dans le cas ou deux elements consecutive sont differents cela signifie qu'il ya une nouvelle ensemble
{
i++;
printf("la %d eme ensemble des etudiant qui ont le meme noms :\n",i);
}
printf("%d\n",p->info.matricule);
p=p->suiv;
}
return(psave);
}
//tri de la liste (tri numerique par jour de naissance)
liste precedent3(liste p,int j,int m,int a)
{
int ok=1;
liste pp,ps;
ps=p;
pp=NULL;
while((ps!=NULL)&&(ok))
{
if ((ps->info.date_naiss.aa*400+ps->info.date_naiss.mm*20+ps->info.date_naiss.jj)<(a*400+m*20+j))//comparaison de deux date
{
pp=ps;
ps=ps->suiv;
}
else
ok=0;
}
return(pp);
}
liste insertion3(liste ord,liste p)
{
liste prec;
prec=precedent3(ord,p->info.date_naiss.jj,p->info.date_naiss.mm,p->info.date_naiss.aa) ;
if (prec==NULL)
{
p->suiv=ord;
ord=p;
}
else
{
p->suiv=prec->suiv;
prec->suiv=p;
}
return(ord);
}
liste tri_insertion_jour(liste tete)//cette tri est comme la tri precedante mais son critere de tri est la moyenne
{
liste p,aux,ord;
ord=NULL;
aux=tete;
while (aux!=NULL)
{
p=aux;
aux=aux->suiv;
ord=insertion3(ord,p);
}
return(ord);
}
//affichage des etudiants qui sont nes le meme jour
liste r_list_date(liste tete)
{
liste p,ps,psave;
p=tri_insertion_jour(tete);//tout d'abord on fait une tri par jour de naissance
psave=p;//apres la tri de la liste on aura besoin d'une variable auxiliaire qui va garder la nouvelle tete de la liste et qui sera la valeur de retour de la fonction
int i=1;
printf("la %d eme ensemble des etudiants qui sont nes le meme jour :\n",i);//On affiche la premiere ensemble en dehord de la boucle
printf("%d\n",p->info.matricule);
ps=p;
p=p->suiv;
while (p!=NULL)
{
if((p->info.date_naiss.jj!=ps->info.date_naiss.jj)||(p->info.date_naiss.mm!=ps->info.date_naiss.mm)||(p->info.date_naiss.aa!=ps->info.date_naiss.aa))//à chaque fois qu'on trouve deux elements conséqutive qui sont differents cela signifie qu'il ya une nouvelle ensemble
{
i++;
printf("la %d eme ensemble des etudiants qui sont nes le meme jour est:\n",i);
}
printf("%d\n",p->info.matricule);
p=p->suiv;
}
return(psave);
}
//suppression
liste supprimer(liste tete)
{
liste pp,ps;//le pointeur ps va pointer sur l'element a supprimer
int cherch;
do
{
puts("entrer une matricule non nulle de l'etudiant a supprimer\n");
scanf("%d",&cherch);
}
while (cherch<1);
pp=precedent(tete,cherch);//chercher le precedent de l'element à supprimer
if (pp==NULL)//Dans ce cas l'element a supprimer est la tete de la liste
ps=tete;
else
ps=pp->suiv;
if(ps==NULL)
{
printf("l'element que vous avez entrer n'existe pas dans la liste \n suppression non effectue");
return(tete);
}
if (pp==NULL)
tete=tete->suiv;
else
pp->suiv=ps->suiv;
delete ps;
printf("suppression effectue");
return(tete);
}
//affichage de la liste
void afficher(liste tete)
{
printf("la liste est \n\n");
liste p;
p=tete;
do
{
affiche_etudiant(p->info);
p=p->suiv;
}
while(p!=NULL);
}
void main()
{
clrscr();
liste tete;
tete=creer_liste();
int rep;
do
{
printf("\n\n");
printf(" ________________________________________________________________________\n|\n");
printf("| GEStIONAIRE ETUDIANT |\n");
printf("|________________________________________________________________________|\n|\n");
printf("| 1-ajouter un element au debut de la liste |\n");
printf("| 2-ajouter un element a la fin de la liste |\n");
printf("| 3-rechercher un etudiant dans la liste |\n");
printf("| 4-l'ensemble des etuidants qui portent le meme le meme nom |\n");
printf("| 5-l'ensemble des etuidants qui sont nes le meme jour |\n");
printf("| 6-trier les etudiants alphabetiquement |\n");
printf("| 7-trier les etudiants par moyenne |\n");
printf("| 8-trier les etudiants par jour de naissance |\n");
printf("| 9-supprimer un element de la liste |\n");
printf("| 10-Affichage de la liste |\n");
printf("| 0-QUITTER |\n");
printf("|________________________________________________________________________|\n");
printf("| donner le numero de votre choix |\n");
printf("|________________________________________________________________________|\n\n");
scanf("%d",&rep);
switch(rep)
{
case 1:tete=ajout_debut(tete);
break;
case 2:tete=ajout_fin(tete);
break;
case 3: if (tete==NULL)
printf("la liste est vide vous devez la remplir");
else
{
if (recherche(tete)==0)
printf("etudiant trouve");
else
printf("etudiant non trouve");
}
break;
case 4:if (tete==NULL)
printf("la liste est vide vous devez la remplir");
else
tete=r_list_nom(tete);
break;
case 5:if (tete==NULL)
printf("la liste est vide vous devez la remplir");
else
tete=r_list_date(tete);
break;
case 6: if (tete==NULL)
printf("la liste est vide vous devez la remplir");
else
{
tete=tri_insertion_chaine(tete);
printf("tri effectue");
}
break;
case 7:if (tete==NULL)
printf("la liste est vide vous devez la remplir");
else
{
tete=tri_insertion_numerique(tete);
printf("tri effectue");
}
break;
case 8:if (tete==NULL)
printf("la liste est vide vous devez la remplir");
else
{
tete=tri_insertion_jour(tete);
printf("tri effectue");
}
break;
case 9:if (tete==NULL)
printf("la liste est vide vous devez la remplir");
else
tete=supprimer(tete);
break;
case 10:if (tete==NULL)
printf("la liste est vide vous devez la remplir");
else
afficher(tete);
break;
}
}
while(rep!=0);
printf("\n COPY RIGHT\n\nPRODUCED BY KHOUAJA MARWEN & BEN DERMECH OUSSAMA\n\n 2009 LFI I/TD I\n\nLICENCED BY UNIVERSITY OF SCIENCE MONASTIR\n\n SPECIAL THANKS FOR MR CHTEOUI\n");
getch();
}
#include<conio.h>
#include<stdlib.h>
int n;//n est le nombre des notes pour chaque etudiant-variable globale-
struct date
{
int jj;
int mm;
int aa;
};
typedef struct date DATE;
struct etudiant
{
int matricule;
char nom[20];
char prenom[20];
DATE date_naiss;
float tab_note[10];
float moyenne;
};
typedef struct etudiant ETUDIANT;
struct Element
{
ETUDIANT info;
struct Element *suiv;
};
typedef struct Element *liste;
int controle_date(int a,int b,int c)
{
int mois[12];
mois[0]=31;
mois[8]=30;
mois[2]=31;
mois[4]=31;
mois[6]=31;
mois[7]=31;
mois[9]=31;
mois[11]=31;
mois[3]=30;
mois[10]=30;
mois[1]=30;
mois[5]=30;
if(c%4==0)
mois[1]=29;
else
mois[1]=28;
if((b-1<0)||(b-1>11))
return(0);
if ((a>mois[b+1])||(a<1))
return(0);
return(1);
}
float remplir(float t[20])
{
float moyn=0;
do
{
printf("\nentrer le nombre des notes qui doit etre superieur ou egale a 1\n");
scanf("%d",&n);
}
while(n<1);
for(int i=0;i<n;i++)
{
printf("\nentrer la note de la martiere -%d-\n",i);
scanf("%f",&t[i]);
moyn=moyn+t[i];
}
moyn=moyn/n;
return(moyn);
}
void saisie_etudiant(ETUDIANT *etud)
{
do
{
printf("entrer le numero de la matricule qui doit etre >0\n");
scanf("%d",&(*etud).matricule);
}
while(etud->matricule<=0);
printf("\nentrer le nom\n");
scanf("%s",etud->nom);
printf("\nentrer le prenom\n");
scanf("%s",etud->prenom);
do
{
printf("\nentrer la jour de la date de naissance\n");
scanf("%d",&(*etud).date_naiss.jj);
printf("\nentrer le mois de la date de naissance\n");
scanf("%d",&(*etud).date_naiss.mm);
printf("\nentrer l'anné de la date de naissance\n");
scanf("%d",&(*etud).date_naiss.aa);
}
while(controle_date(etud->date_naiss.jj,etud->date_naiss.mm,etud->date_naiss.aa)<0);
etud->moyenne=remplir(etud->tab_note);
}
void affiche_etudiant(ETUDIANT etud)
{
printf("\nla matricule est :\n");
printf("%d",etud.matricule);
printf("\nle nom est :\n");
printf("%s",etud.nom);
printf("\nle prenom est :\n");
printf("%s",etud.prenom);
printf("\nla date de naissance est :\n");
printf("\nle jour est :%d",etud.date_naiss.jj);
printf("\n le mois est :%d",etud.date_naiss.mm);
printf("\n l'anne est :%d",etud.date_naiss.aa);
printf("\nles notes sont :\n");
for(int i=0;i<n;i++)
printf("la note de la matiere -%d-est %f\n",i,etud.tab_note[i]);
printf("\nla moyenne est :\n");
printf("%f",etud.moyenne);
}
//creer liste
liste creer_liste()//creer une liste consiste a metre la tete a NULL
{
return(NULL);
}
// ajouter un element au debut de la liste
liste ajout_debut(liste tete)
{
//allouer(p);
liste p;
p=(liste)malloc(sizeof(liste));
//remplissage de p
saisie_etudiant(&(p->info));
//chainage
p->suiv=tete;
return(p);
}
//ajouter a la fin de la liste
liste ajout_fin(liste tete)
{
//allouer(p);
liste p,pp,ps;
ps=tete;
pp=NULL;
//pp va pointer sur l'element l'avant dernier
while(ps!=NULL)//rechercher du dernier element
{
pp=ps;
ps=ps->suiv;
}
//allocation de p
p=(liste)malloc(sizeof(liste));
//remplissage de p
saisie_etudiant(&(p->info));
//chainage
p->suiv=NULL;
if (pp==NULL)//si pp=NULL alors que la liste est initialement vide,l'ajout va etre eeffectue au debut de la liste
return (p);//on retourne alors p qui sera parsuite la tete de la liste
else
pp->suiv=p;
return(tete);
}
//recherche d'un element dans la liste
int recherche(liste tete)
{
liste p;
p=tete;
int cherch;
do
{
printf("entrer une matricule matricule non nulle de l'etudiant a rechercher");
scanf("%d",&cherch);
}
while(cherch<1);
while((p->info.matricule!=cherch)&&(p!=NULL))//recherche du mot dans la liste
p=p->suiv;
if(p==NULL)
//si pp=NULL alors que le mot cle n'existe pas
return(-1);
return(0);
}
//tri de la liste (tri alphabetique)
liste precedent(liste p,int m)//cette fonction cherche le precedent grace a une matricule donné
{
liste pp,ps;
ps=p;
pp=NULL;
while((ps!=NULL)&&(ps->info.matricule<m))
{
pp=ps;
ps=ps->suiv;
}
return(pp);
}
liste insertion(liste ord,liste p)//cette fonction insert un étudiant dans sa bonne position afin de garder la nuvelle liste trier
{
liste prec;
prec=precedent(ord,p->info.matricule) ;
if (prec==NULL)
{
p->suiv=ord;
ord=p;
}
else
{
p->suiv=prec->suiv;
prec->suiv=p;
}
return(ord);
}
liste tri_insertion_chaine(liste tete)//tri de la liste
{
liste p,aux,ord;
ord=NULL;
aux=tete;
while (aux!=NULL)
{
p=aux;
aux=aux->suiv;
ord=insertion(ord,p);
}
return(ord);
}
//tri de la liste (tri numerique)
liste precedent2(liste p,float m)
{
liste pp,ps;
ps=p;
pp=NULL;
while((ps!=NULL)&&(ps->info.moyenne<m))
{
pp=ps;
ps=ps->suiv;
}
return(pp);
}
liste insertion2(liste ord,liste p)
{
liste prec;
prec=precedent2(ord,p->info.moyenne) ;
if (prec==NULL)
{
p->suiv=ord;
ord=p;
}
else
{
p->suiv=prec->suiv;
prec->suiv=p;
}
return(ord);
}
liste tri_insertion_numerique(liste tete)//cette tri est comme la tri precedante mais son critere de tri est la moyenne
{
liste p,aux,ord;
ord=NULL;
aux=tete;
while (aux!=NULL)
{
p=aux;
aux=aux->suiv;
ord=insertion2(ord,p);
}
return(ord);
}
//affichage des etudiant qui ont le meme nom
liste r_list_nom(liste tete)
{
liste p,ps,psave;
p=tri_insertion_chaine(tete);//tout d'abord on effectue une tri sur la liste
psave=p;//apres la tri de la liste on aura besoin d'une variable auxiliaire qui va garder la nouvelle tete de la liste et qui sera la valeur de retour de la fonction
int i=1;
printf("la %d eme ensemble des etudiant qui ont le meme noms :\n",i);//on affiche la premiere ensemble
printf("%d\n",p->info.matricule);
ps=p;
p=p->suiv;
while (p!=NULL)
{
if(p->info.matricule!=ps->info.matricule)//dans le cas ou deux elements consecutive sont differents cela signifie qu'il ya une nouvelle ensemble
{
i++;
printf("la %d eme ensemble des etudiant qui ont le meme noms :\n",i);
}
printf("%d\n",p->info.matricule);
p=p->suiv;
}
return(psave);
}
//tri de la liste (tri numerique par jour de naissance)
liste precedent3(liste p,int j,int m,int a)
{
int ok=1;
liste pp,ps;
ps=p;
pp=NULL;
while((ps!=NULL)&&(ok))
{
if ((ps->info.date_naiss.aa*400+ps->info.date_naiss.mm*20+ps->info.date_naiss.jj)<(a*400+m*20+j))//comparaison de deux date
{
pp=ps;
ps=ps->suiv;
}
else
ok=0;
}
return(pp);
}
liste insertion3(liste ord,liste p)
{
liste prec;
prec=precedent3(ord,p->info.date_naiss.jj,p->info.date_naiss.mm,p->info.date_naiss.aa) ;
if (prec==NULL)
{
p->suiv=ord;
ord=p;
}
else
{
p->suiv=prec->suiv;
prec->suiv=p;
}
return(ord);
}
liste tri_insertion_jour(liste tete)//cette tri est comme la tri precedante mais son critere de tri est la moyenne
{
liste p,aux,ord;
ord=NULL;
aux=tete;
while (aux!=NULL)
{
p=aux;
aux=aux->suiv;
ord=insertion3(ord,p);
}
return(ord);
}
//affichage des etudiants qui sont nes le meme jour
liste r_list_date(liste tete)
{
liste p,ps,psave;
p=tri_insertion_jour(tete);//tout d'abord on fait une tri par jour de naissance
psave=p;//apres la tri de la liste on aura besoin d'une variable auxiliaire qui va garder la nouvelle tete de la liste et qui sera la valeur de retour de la fonction
int i=1;
printf("la %d eme ensemble des etudiants qui sont nes le meme jour :\n",i);//On affiche la premiere ensemble en dehord de la boucle
printf("%d\n",p->info.matricule);
ps=p;
p=p->suiv;
while (p!=NULL)
{
if((p->info.date_naiss.jj!=ps->info.date_naiss.jj)||(p->info.date_naiss.mm!=ps->info.date_naiss.mm)||(p->info.date_naiss.aa!=ps->info.date_naiss.aa))//à chaque fois qu'on trouve deux elements conséqutive qui sont differents cela signifie qu'il ya une nouvelle ensemble
{
i++;
printf("la %d eme ensemble des etudiants qui sont nes le meme jour est:\n",i);
}
printf("%d\n",p->info.matricule);
p=p->suiv;
}
return(psave);
}
//suppression
liste supprimer(liste tete)
{
liste pp,ps;//le pointeur ps va pointer sur l'element a supprimer
int cherch;
do
{
puts("entrer une matricule non nulle de l'etudiant a supprimer\n");
scanf("%d",&cherch);
}
while (cherch<1);
pp=precedent(tete,cherch);//chercher le precedent de l'element à supprimer
if (pp==NULL)//Dans ce cas l'element a supprimer est la tete de la liste
ps=tete;
else
ps=pp->suiv;
if(ps==NULL)
{
printf("l'element que vous avez entrer n'existe pas dans la liste \n suppression non effectue");
return(tete);
}
if (pp==NULL)
tete=tete->suiv;
else
pp->suiv=ps->suiv;
delete ps;
printf("suppression effectue");
return(tete);
}
//affichage de la liste
void afficher(liste tete)
{
printf("la liste est \n\n");
liste p;
p=tete;
do
{
affiche_etudiant(p->info);
p=p->suiv;
}
while(p!=NULL);
}
void main()
{
clrscr();
liste tete;
tete=creer_liste();
int rep;
do
{
printf("\n\n");
printf(" ________________________________________________________________________\n|\n");
printf("| GEStIONAIRE ETUDIANT |\n");
printf("|________________________________________________________________________|\n|\n");
printf("| 1-ajouter un element au debut de la liste |\n");
printf("| 2-ajouter un element a la fin de la liste |\n");
printf("| 3-rechercher un etudiant dans la liste |\n");
printf("| 4-l'ensemble des etuidants qui portent le meme le meme nom |\n");
printf("| 5-l'ensemble des etuidants qui sont nes le meme jour |\n");
printf("| 6-trier les etudiants alphabetiquement |\n");
printf("| 7-trier les etudiants par moyenne |\n");
printf("| 8-trier les etudiants par jour de naissance |\n");
printf("| 9-supprimer un element de la liste |\n");
printf("| 10-Affichage de la liste |\n");
printf("| 0-QUITTER |\n");
printf("|________________________________________________________________________|\n");
printf("| donner le numero de votre choix |\n");
printf("|________________________________________________________________________|\n\n");
scanf("%d",&rep);
switch(rep)
{
case 1:tete=ajout_debut(tete);
break;
case 2:tete=ajout_fin(tete);
break;
case 3: if (tete==NULL)
printf("la liste est vide vous devez la remplir");
else
{
if (recherche(tete)==0)
printf("etudiant trouve");
else
printf("etudiant non trouve");
}
break;
case 4:if (tete==NULL)
printf("la liste est vide vous devez la remplir");
else
tete=r_list_nom(tete);
break;
case 5:if (tete==NULL)
printf("la liste est vide vous devez la remplir");
else
tete=r_list_date(tete);
break;
case 6: if (tete==NULL)
printf("la liste est vide vous devez la remplir");
else
{
tete=tri_insertion_chaine(tete);
printf("tri effectue");
}
break;
case 7:if (tete==NULL)
printf("la liste est vide vous devez la remplir");
else
{
tete=tri_insertion_numerique(tete);
printf("tri effectue");
}
break;
case 8:if (tete==NULL)
printf("la liste est vide vous devez la remplir");
else
{
tete=tri_insertion_jour(tete);
printf("tri effectue");
}
break;
case 9:if (tete==NULL)
printf("la liste est vide vous devez la remplir");
else
tete=supprimer(tete);
break;
case 10:if (tete==NULL)
printf("la liste est vide vous devez la remplir");
else
afficher(tete);
break;
}
}
while(rep!=0);
printf("\n COPY RIGHT\n\nPRODUCED BY KHOUAJA MARWEN & BEN DERMECH OUSSAMA\n\n 2009 LFI I/TD I\n\nLICENCED BY UNIVERSITY OF SCIENCE MONASTIR\n\n SPECIAL THANKS FOR MR CHTEOUI\n");
getch();
}