Académique Documents
Professionnel Documents
Culture Documents
Enoncé : Soit FA une File d’Attente contenant une liste des étudiants où chaque étudiant est représenté
par : matricule (entier), nom, prénom, section (A, B ou C), numéro de groupe (1 à 6), sa moyenne
générale (entre 0 et 20). Cette file est implémentée de manière dynamique en utilisant une LLC (Liste
Linéaire Chaînée).
L’objectif de ce TP est de :
1. Créer une file à partir d’un fichier texte contenant la liste des étudiants.
2. Classer les étudiants selon l’ordre décroissant des moyennes en utilisant le tri par ABR.
Pour ce faire, on crée un projet nommé TestTP_LLC.cbp, qui contient les fichiers suivants : « main.c », «
ModeleLLC.h », « ModeleLLC.c », « ModeleFileD.h », « ModeleFileD.c », « ModeleABR.h » et «
ModeleABR.c ».
Il est demandé de
1. Compléter le fichier « ModeleFileD.h » qui correspond au fichier « ModeleFileD.h »:
Fichier « ModeleFileD.h » Fichier « ModeleFileD.c »
#ifndef MODELEFILED_H_INCLUDED #include <stdlib.h>
#define MODELEFILED_H_INCLUDED #include"ModeleFileD.h"
#include"ModeleLLC.h"
void Initfile (FileAttente* F)
typedef struct FileAttente { (*F).T = NULL; (*F).Q = NULL; }
{ maillon* T; maillon* Q;
} FileAttente; int FileVide (FileAttente F)
{ return(F.T==NULL);}
return(F.T==NULL);
void Initfile(FileAttente * F);
int FilePleine (FileAttente F)
int FileVide (FileAttente F); { return(0);}
return(0);
2. En utilisant le modèle de la file, compléter la fonction creerFile qui permet de créer une file à
partir d’un fichier texte:
FileAttente creerFile(char* nomF){
FileAttente F;
Etudiant v;
FILE *fichier;
Initfile(&F);
fichier = fopen(nomF,"r");// Ouverture du fichier en lecture grâce à "r"
if (fichier != NULL)
{
fscanf(fichier,"%s %s %s %s %s %s\
%s\n", v.nom, v.nom, v.nom, v.nom, v.nom, v.nom);
while(!feof(fichier))
Aroussi Page 3
Etudiant v;
FILE *fichier;
fichier = fopen(nom,"w");// Ouverture du fichier en écriture grâce à "w"
if (fichier != NULL)
{
fprintf(fichier,"Matricule Nom Prenom Groupe Section Moyenne \n");
while(! FileVide(*F))
FileVide(*F))
{
Defiler(F, &v);
fprintf(fichier,"%d %s %s %d %c %f\
%f\n",v.matricule, v.nom, v.prenom, v.groupe, v.section, v.moyenne);
}
fclose(fichier);
}
}
Bon courage
Aroussi Page 4