Vous êtes sur la page 1sur 6

#include <stdio.

h>

#include <stdlib.h>

#define N 30

#define M 50

#define K 200

typedef struct date{

int jour;

int mois;

int annee;

}Date;

typedef struct etudiant{

char nom[N];

char prenom[M];

Date date_nais;

int num_etud;

}Etudiant;

//recherche de l’existence d'un etudiant avant l’ajout (pour éviter les doublons)

int recherche(Etudiant tab[], int nb, int num){

int i;

for(i=0; i<nb;i++){

if(tab[i].num_etud == num) return 1;

if(tab[i].num_etud >num) return 0;

return 0;

}
//ajout d'un etudiant

void Ajout_etudiant(Etudiant tab[], int *nb){

Etudiant e;

int num;

int j, i=0;

do{

printf("Veuillez saisir le numero d'etudiant \n");

scanf("%d",&num);

while((num<=0) || recherche(tab,*nb,num));

e.num_etud=num;

//saisie des autres infos

printf("Veuillez saisir le nom de l'etudiant \n");

scanf("%s", &e.nom);

printf("Veuillez saisir le prenom de l'etudiant \n");

scanf("%s", &e.prenom);

printf("Veuillez saisir le date de naissance de l'etudiant \n");

scanf("%d%d%d",&e.date_nais.jour,&e.date_nais.mois,&e.date_nais.annee);

printf("\n\n\n");

while((i<*nb) && (tab[i].num_etud<num))

i++;

for(j=*nb;j>i;j--){

tab[j]=tab[j-1];

tab[j]=e;

(*nb)++;

}
//recherche de la position d’un étudiant dans le tableau (recherche dichotomique)

int Recherche_etud (Etudiant tab[], int nb, int num){

int d,f,m;

d=0;

f=nb-1;

while(d<=f){

m=(d+f)/2;

if(tab[m].num_etud==num) return m;

else if(tab[m].num_etud<num)

d=m+1;

else

f= m-1;

return -1;

//affichage d'un étudiant

void Affich_etudiant (Etudiant tab[], int nb, int num){

int m= Recherche_etud(tab, nb, num) ;

if(m==-1){

printf("Ce numero d'étudiant n'existe pas \n");

else {

printf("Num Etudiant \t\tNom \t\t\tPrenom \t\t\tDate de naissance \n\n");

printf("%d \t\t\t", tab[m].num_etud);

printf("%s \t\t\t", tab[m].nom);

printf("%s \t\t\t", tab[m].prenom);


printf("%d/%d/%d \n", tab[m].date_nais.jour, tab[m].date_nais.mois,
tab[m].date_nais.annee);

//affichage de la liste des étudiants

void Affich_liste (Etudiant tab[], int nb){

int i;

printf("Num Etudiant \t\tNom \t\t\tPrenom \t\t\tDate de naissance \n\n");

for(i=0; i<nb ; i++){

printf("%d \t\t\t", tab[i].num_etud);

printf("%s \t\t\t", tab[i].nom);

printf("%s \t\t\t", tab[i].prenom);

printf("%d/%d/%d \n", tab[i].date_nais.jour, tab[i].date_nais.mois,


tab[i].date_nais.annee);

// Affichage de la liste des étudiants en nés avant l’année " annee "

void Affich_liste_annee (Etudiant tab[], int nb, int annee ){

int i;

printf("Num Etudiant \t\tNom \t\t\tPrenom \t\t\tDate de naissance \n\n");

for(i=0; i<nb ; i++){

if(tab[i].date_nais.annee <= annee){

printf("%d \t\t\t", tab[i].num_etud);

printf("%s \t\t\t", tab[i].nom);


printf("%s \t\t\t", tab[i].prenom);

printf("%d/%d/%d \n", tab[i].date_nais.jour, tab[i].date_nais.mois,


tab[i].date_nais.annee);

//suppression d'un étudiant

void Supprim_etud(Etudiant tab[], int *nb, int num){

int i;

int p = Recherche_etud(tab, *nb, num) ; //position de l'élément à supprimer

if(p!= -1){

for(i=p;i<(*nb)-1;i++)

tab[p]=tab[p+1];

(*nb)--;

}
int main() {

Etudiant Etud_L2 [K];

int nb=0;

int num;

int annee; //pour afficher la liste des étudiants nés avant cette année

Ajout_etudiant(Etud_L2, &nb);

Ajout_etudiant(Etud_L2, &nb);

Affich_liste(Etud_L2, nb);

printf("taper le num etudiant de l'etudiant a supprimer\n");

scanf("%d",&num);

Supprim_etud(Etud_L2, &nb,num);

Affich_liste(Etud_L2, nb);

printf("pour connaitre la liste des etudiants nes avant une annee, veuillez saisir une
annee en particulier\n");

scanf("%d",&annee);

Affich_liste_annee(Etud_L2, nb, annee);

return 0;

Vous aimerez peut-être aussi