#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "gestionlist.h"
#include "malist.h"
int main(int argc, char *argv[])
{
void print_entete(void){
printf ("ID \t");
printf ("NOM \t");
printf ("Filiere \n");
}
struct etudiant_s premier ;
premier.nom = "premier" ;
premier.filiere = "M1";
premier.id=1;
premier.moyenne=10;
INIT_LIST_HEAD(&premier.etudiant);
INIT_LIST_HEAD(&premier.M1);
INIT_LIST_HEAD(&premier.M2);
struct etudiant_s second ;
second.nom = "second" ;
second.filiere = "M1";
second.id=2;
second.moyenne=9;
INIT_LIST_HEAD(&second.etudiant);
INIT_LIST_HEAD(&second.M1);
INIT_LIST_HEAD(&second.M2);
struct etudiant_s troisieme ;
troisieme.nom = "trois" ;
troisieme.filiere = "M1";
troisieme.id=3;
troisieme.moyenne=18;
INIT_LIST_HEAD(&troisieme.etudiant);
INIT_LIST_HEAD(&troisieme.M1);
INIT_LIST_HEAD(&troisieme.M2);
struct etudiant_s quatrieme ;
quatrieme.nom = "quatre" ;
quatrieme.filiere = "L";
quatrieme.id=4;
quatrieme.moyenne=18;
INIT_LIST_HEAD(&quatrieme.etudiant);
INIT_LIST_HEAD(&quatrieme.M1);
INIT_LIST_HEAD(&quatrieme.M2);
LIST_HEAD(etudiants);
LIST_HEAD(M1s);
list_add(&quatrieme.etudiant,&etudiants);
list_add(&troisieme.etudiant,&etudiants);
list_add(&second.etudiant,&etudiants);
list_add(&premier.etudiant,&etudiants);
list_add_tail(&premier.M1,&M1s);
list_add_tail(&second.M1,&M1s);
list_add_tail(&troisieme.M1,&M1s);
struct list_head * position ;
struct etudiant_s *ptr;
printf ("-----------liste des etudiants en M1 -----------\n");
print_entete();
list_for_each_entry(ptr,&M1s,M1){
printf ("%d\t" , ptr->id );
printf ("%s\t" , ptr->nom);
printf ("%s\n" , ptr->filiere);
}
LIST_HEAD(M2s);
list_for_each_entry(ptr,&etudiants,etudiant){
if (!strcmp(ptr->filiere,"M1") && (ptr->moyenne>=10)){
ptr->filiere="M2";
list_del(&(ptr->M1));
list_add_tail(&(ptr->M2),&M2s);
}
}
printf ("-----------liste des etudiants en M2 -----------\n");
print_entete();
list_for_each_entry(ptr,&M2s,M2){
printf ("%d\t" , ptr->id );
printf ("%s\t" , ptr->nom);
printf ("%s\n" , ptr->filiere);
}
printf ("-----------liste des etudiants en M1 -----------\n");
print_entete();
list_for_each_entry(ptr,&M1s,M1){ printf ("%d\t" , ptr->id );
printf ("%s\t" , ptr->nom);
printf ("%s\n" , ptr->filiere);
}
struct list_head *n;
list_for_each_safe(position, n, &etudiants)
{
list_del(position); }
system("PAUSE");
return 0;
}