1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
| typedef struct eleve {
char nom[32];
char prenom[32];
int date_de_naissance;
double note_finale;
struct eleve* suivant;
} Eleve;
///Fonction lire_eleve
///Fonction qui demande a l'utilisateur les données des eleves qu'il souhaite insérer.
Eleve* lire_eleve(Eleve* el){
printf("nom?\n");
scanf("%s",el->nom);
printf("prenom?\n");
scanf("%s",el->prenom);
printf("date de naissance?\n");
scanf("%d",&el->date_de_naissance);
printf("note finale?\n");
scanf("%lf",&el->note_finale);
return el;
}
///Fonction imprime_eleve
///Fonction qui imprime le nom, le prenom, la date de naissance et la note finale
void imprime_eleve(Eleve s){
int a=strlen(s.nom);
int b=strlen(s.prenom);
int i;
for(i=0;i<a;i++){printf("%c ",s.nom[i]);}
for(i=0;i<b;i++){printf("%c ",s.prenom[i]);}
printf("%i %d \n",s.date_de_naissance,s.note_finale);
};
// Cette fonction insere en tete de la liste l'eleve donne. Tete pointera sur le nouvel Eleve.
void insertionEnTete(Eleve ** tete, Eleve * eleveAInserer) {
eleveAInserer->suivant= (*tete);
(*tete) = eleveAInserer;}
//Insere en queue de liste l'eleve donne
void insertionEnQueue(Eleve ** tete, Eleve * eleveAInserer) {
Eleve * ptr;
if (*tete != NULL) {
ptr = * tete; while (ptr->suivant!= NULL)
ptr = ptr->suivant; ptr->suivant= eleveAInserer; }
else *tete = eleveAInserer; }
void inserer(Eleve ** tete, Eleve * eleveAInserer) {
if (*tete == NULL) {
*tete = eleveAInserer;
} else {
if (strcmp((*tete)->nom, eleveAInserer->nom) > 0) {
printf("Insertion en tete %s < %s\n", eleveAInserer->nom, (*tete)->nom);
insertionEnTete(tete, eleveAInserer);
} else {
Eleve * ptr = *tete;
while ((ptr->suivant != NULL) && (strcmp(ptr->suivant->nom, eleveAInserer->nom) < 0)) {
printf("%s > %s\n", eleveAInserer->nom, ptr->suivant->nom);
ptr = ptr->suivant;
}
eleveAInserer->suivant= ptr->suivant;
ptr->suivant= eleveAInserer;
}
}
}
void imprime_classe(Eleve* tete) {
Eleve * ptr;
ptr = tete;
if (tete == NULL)
printf("Il n y a pas d'étudiants\n");
else {
do {
printf("%s \t\t%s \t\t%d \t\t %d\n", ptr->nom, ptr->prenom, ptr->date_de_naissance, ptr->note_finale);
ptr = ptr->suivant;
} while (ptr != NULL);
}
}
///Fonction main()
int main(){
Eleve * tete = NULL;
Eleve* premier=malloc(sizeof(Eleve));
premier=lire_eleve(premier);
int isAnotherStudent=1;
while(isAnotherStudent==1)
{
printf("Voudriez-vous continuer la saisie? (oui(1) ou non(0)) \n");
scanf("%d",&isAnotherStudent);
if(isAnotherStudent==1)
{
premier->suivant= malloc(sizeof(Eleve));
premier->suivant=lire_eleve(premier->suivant);
} else
{
premier->suivant=NULL;
}
}
imprime_classe(premier);
// imprime_classe(classe, compteur);
return 0;
} |