1
Correction
TD1 Exercice 8
#define N 51 typedef struct{
int mat;
char nom[N];
float moy;
} etudiant;
void affiche(etudiant E){
printf("le nom : %s\n",E.nom);
printf("matricule : %d\n",E.mat);
printf("la moyenne : %f\n",E.moy);
}
void lire(etudiant *E){
printf("donner le nom: ");
scanf("%s",E->nom);
printf("donner la moyenne : ");
scanf("%f",&E->moy);
printf("donner matricule : ");
scanf("%d",&E->mat);
}
2
void echanger(etudiant T[],int i,int j){
etudiant temp;
temp=T[i];
T[i]=T[j];
T[j]=temp;
}
void trier( etudiant T[N],int n){
int min,i,j;
for(i=0;i<n-1;i++){
min=i;
for(j=i;j<n;j++)
if(strcmp(T[min].nom,T[j].nom)>0)min=j;
echanger(T,min,i);
} } main(){
int i,n;
etudiant T[N];
printf("donner le nombre d'etudiants : ");
scanf("%d",&n);
for(i=0;i<n;i++) lire(&T[i]);
trier(T,n);
for(i=0;i<n;i++)
3
affiche(T[i]);
}
TD2
Exercice 1
element max(liste l){
element k=l->info;
place p;
for(p=l;p;p=p->next)if (k < p->info)k=p->info;
return k;
}
Exercice 2
#define N 100 main(){
element t[N]={2,2,3,4,6,5,3,6,7,2,11,12,15,17};
int n=13;
int i,j,k;
liste l;
l=liste_vide();
4
for(i=0;i<n;i++){l=insererl(l,i,t[i]);}
printf("max %d ",max(l));
liste l1=liste_vide(),l2=liste_vide();
place p=l;
int val,i=0,j=0;
puts("donner val");scanf("%d",&val);
while(p){
if(p->info>=val){l1=insererl(l1,j,p->info);j++;
}else{
l2=insererl(l2,i,p->info);i++;
}
p=p->next;
}
puts("apres eclatement");
afficher(l1); puts(""); afficher(l2);
}
Exercice4
d- liste concatener (liste l1, liste l2){
if(est_videl(l1))return l2;
place p=l1;
5
while(p->next!=NULL)p=p->next;
p->next=l2;
return l1;
}
b- liste recherche(liste l, element x){
place p=l;
while(p)
{ if (p->info==x)return p;
p=p->next;
}
return NULL;
}