Vous êtes sur la page 1sur 3

#include <stdio.

h>
#include <stdlib.h>

typedef struct
{
unsigned j;
unsigned m;
unsigned a;
}date;
typedef struct
{
unsigned code;
char *nom;
char *prenom;
date DN;
char *sexe;
float moy;
}etudiant;

int existe(etudiant*tc,unsigned c,etudiant*p1)


{
etudiant*p2=tc;
while(p2<p1)
if(p2->code == c)
return 1;
else
p2++;
return 0;
}
int verif(char *ch)
{
char *p=ch;
do
{
if(!(isalpha(*p)|| *p == " "))
return 0;
else
p++;
}while(*p);
return 1;

void chargement(etudiant*tc,int n)
{
etudiant*p;
char ch[20];
for(p=tc;p<tc+n;p++)
{
printf("Etudiant num %d \n",p-tc+1);
do
{
printf("donner le code :");
fflush(stdin);
scanf("%u",&p->code);
}while(!(existe(tc,p->code,p)==0));
do
{
printf("donner le nom :");
fflush(stdin);
gets(ch);
}while(!(verif(ch) && strlen(ch)>1 && strstr(ch," ")==0));
p->nom=strdup(ch);
do
{
printf("donner le prenom :");
fflush(stdin);
gets(ch);
}while(!(verif(ch) && strlen(ch)>1 && strstr(ch," ")==0));
p->prenom=strdup(ch);
printf("donner la date de naissance :");
fflush(stdin);
scanf("%u/%u/%u",&p->DN.j,&p->DN.m,&p->DN.a);
do
{
printf("donner le sexe :");
fflush(stdin);
gets(ch);
p->sexe=strdup(ch);
}while(!(strcmp(p->sexe,"m")==0 || strcmp(p->sexe,"f")==0));
do
{
printf("donner le moy :");
fflush(stdin);
scanf("%f",&p->moy);
}while(!(0 <= p->moy && p->moy<= 20 ));
}
}
float calcul(etudiant*tc,int n)
{
etudiant *p;
float s=0;
for(p=tc ;p<tc+n;p++)
s=s+ p->moy;
return s/n;
}
void recherche1(etudiant*tc,int n)
{
etudiant *p;
int nbf=0,nbm=0;
for(p=tc;p<tc+n;p++)
{
if( strcmp(p->sexe,"m")==0)
nbm++;
else
nbf++;

}
printf("le nbr des garcons est :%d \n",nbm);
printf("le nbr des filles est :%d \n",nbf);

}
void recherche2(etudiant*tc,int n)
{
etudiant*p;
etudiant*mei=tc;
for(p=tc+1;p<tc+n;p++)
if(p->moy > mei->moy )
mei=p;
printf("le meilleur etudiant est : %s %s \n",mei->nom,mei->prenom);
}
void tri(etudiant*tc,int n)
{
etudiant*pi,*pj,*ind,aux;
for(pi=tc;pi<tc+n-1;pi++)
{
for(pj=pi+1,ind=pi;pj<tc+n;pj++)
if(pj->moy < ind->moy)
ind=pj;
if(ind!=pi)
{
aux=*pi;
*pi=*ind;
*ind=aux;
}
}
printf("le classement des etudiants : \n");
for(pi=tc;pi<tc+n;pi++)
printf("%s %s \n",pi->nom,pi->prenom);

}
void main()
{
int n;
do
{
printf("donner le nombre des etudiants :");
fflush(stdin);
scanf("%d",&n);
}while(!(n>2 && n<=50));
etudiant*tc;
tc=(etudiant*)malloc(n*sizeof(etudiant));
chargement(tc,n);
printf("le moy de la classe est : %.2f \n",calcul(tc,n));
recherche1(tc,n);
recherche2(tc,n);
tri(tc,n);

Vous aimerez peut-être aussi