M2207 - Consolidation des Bases de la Programmation 09/03/2020
TP Partiel : Classe Objet et Gestion de Fichiers
Consignes :
- Les deux exercices sont indépendants.
- À la n de chaque exercice (1 et 2), faire valider vos résultats par le professeur.
- Ne pas oublier de rendre votre compte-rendu et tous les chiers .c, .cpp et .h que vous
avez créés ou modiés.
Exercice 1 : Gestion des Absences d'Étudiants
Le but de cet exercice est de gérer les absences pendant le semestre 2 des étudiants en Licence
Professionnelle GPI-MPI (en alternance et en temps plein) de l'IUT de Roanne.
Nous avons à notre disposition deux chiers Liste_Noms_Etudiants_GPIMPIAlt.txt et
Liste_Noms_Etudiants_GPIMPITpsPlein.txt qui, pour chaque ligne, représente sur deux colonnes le
nom et le prénom de l'étudiant de chacune des deux formations.
Nous allons créer deux autres chiers Absences_GPIMPIAlt.txt et Absences_GPIMPITpsPlein.txt
qui, pour chaque ligne, représente sur quatre colonnes le nom et le prénom de l'étudiant, le nombre
d'absences, et le nombre d'absences injustiées.
An de simplier le problème, à la création des chiers "absences", nous allons supposer que le nombre
d'absences (comme les absences injustiées) est aléatoire et a une valeur comprise entre 0 et 10.
Vous avez à votre disposition le chier GestionAbsences_LP_GPIMPI.c disposant de la structure
générale du travail demandé et qui devra être complété.
1.1 Expliquer l'instruction FILE *fichier_1.
1.2 Expliquer l'instruction fprintf(stream,"%-18s %-14s\n","BLEIN","Florian");
Que représente plus particulièrement "%-18s" dans cette instruction ?
Cette dernière est présente dans un programme (non fourni) qui a permis de générer les chiers
Liste_Noms_Etudiants_GPIMPIAlt.txt et Liste_Noms_Etudiants_GPIMPITpsPlein.txt
1.3 Écrire à l'endroit indiqué dans le programme les instructions permettant d'ouvrir les -
chiers Liste_Noms_Etudiants_GPIMPIAlt.txt et Liste_Noms_Etudiants_GPIMPITpsPlein.txt en
lecture seule et les chiers Absences_GPIMPIAlt.txt et Absences_GPIMPITpsPlein.txt, avec
suppression du contenu au préalable.
1.4 Écrire à l'endroit indiqué dans le programme les instructions permettant de fermer les 4 -
chiers.
1.5 Compléter la fonction int NbreAleatoire(int Nminim, int Nmaxim) retournant un nombre
aléatoire entier à partir de deux limites entières inférieure et supérieure passées en paramètre.
1.6 Compléter la fonction
int CalculNbreEtudiants(FILE *Fic1) rretournant
le nombre d'étudiants présents
dans Liste_Noms_Etudiants_GPIMPIAlt.txt ou
Liste_Noms_Etudiants_GPIMPITpsPlein.txt.
Attention, il est supposé que nous n'avons pas ouvert les chiers avec un éditeur de texte. Nous
n'avons ainsi aucune information au préalable.
1.7 Compléter la procédure void InitAbsences(FILE *Fic1,FILE *Fic2, int mini, int maxi)
qui remplit le chier Liste Absences Etudiants GIM1.txt si la réponse est oui à la question
"Souhaitez-vous initialiser le chier Absences_GPIMPIAlt.txt ?".
Appeler de nouveau cette procédure pour le chier Absences_GPIMPITpsPlein.txt.
Attention : le nombre d'absences injustiées ne peut pas être plus grand que le nombre
d'absences.
1.8 Compléter la procédure void AfficherListeAbsences(FILE *Fic1) permettant d'acher à
l'écran (invité de commandes) toutes les données écrites dans les deux chiers Absences_GPIMPIAlt.txt
et Absences_GPIMPITpsPlein.txt.
DUT RT - Semestre 2 1
M2207 - Consolidation des Bases de la Programmation 09/03/2020
1.9 Compléter la procédure void AfficherNom(FILE *Fic1, char nom[18], char prenom[14])
permettant d'acher à l'écran le contenu de la ligne du chier correspondant à l'étudiant recherché pour
une des deux formations.
Attention, si le nom n'est pas trouvé, il faudra acher un message d'erreur l'indiquant.
1.10 Compléter la procédure void RegularisationAbsence(FILE *Fic1, char nom[18], char
prenom[14], int Nbabsinj) où Nbabsinj est le nombre d'absences injustiées qui vont être régulari-
sées.
Cette procédure mettra à jour vos chiers "absences".
Attention, si le nom n'est pas présent ou si le nombre d'absences à régulariser est supérieur au
nombre d'absences injustiées, il faudra acher un message d'erreur diérent l'indiquant.
Exercice 2 : Création d'une Classe Objet
Nous souhaitons mettre en ÷uvre une nouvelle classe d'objet nommé Matrice2x2, modélisant
une matrice carrée de 2 lignes et de 2 colonnes.
Les attributs (privés) de cette classe seront dénis par quatre réels coefficient1, coefficient2,
coefficient3 et coefficient4 représentant les éléments de la matrice.
Les méthodes (publiques) seront, ainsi, les suivantes :
- une méthode nommée Affichage(), ne retournant rien, permet d'acher à l'écran les quatre
éléments de la matrice instanciée.
- une méthode nommée CalculDeterminant(), retournant une valeur réelle, permet de calculer
le déterminant de la matrice instanciée.
- une méthode nommée Somme(), retournant un objet de classe Matrice2x2, et avec comme
paramètre d'entrée un objet de classe Matrice2x2, permet de déterminer la matrice résultante de la
somme de deux matrices.
- une méthode nommée Produit(), retournant un objet de classe Matrice2x2, et avec comme
paramètre d'entrée un objet de classe Matrice2x2, permet de déterminer la matrice résultante du
produit de deux matrices.
Données :
a b x y a+x b+y ax + bz ay + bt
Soient A= et B= alors A+B= et A×B=
c d z t c+z d+t cx + dz cy + dt
a b
Le déterminant de la matrice A est égal à det A= =a×d−b×c
c d
Pour cela, vous allez créer trois chiers dans votre projet exercice2 nommé Matrice2x2.h,
Matrice2x2.cpp, et TestObjetMatrice.cpp (contenant le main()).
2.1 Faut-il plutôt utiliser un compilateur C ou C++ ? Pourquoi ?
2.2 Qu'allez-vous eectuer dans le chier Matrice2x2.h ?
Qu'allez-vous eectuer dans le chier Matrice2x2.cpp ?
2.3 Dans le chier Matrice2x2.h, introduire les attributs privés dénis précédemment, deux
méthodes publiques de type constructeur et une méthode publique de type destructeur.
L'une des deux méthodes constructrice n'a aucun argument d'entrée et instancie un objet de
classe Matrice2x2 de coecients nuls.
L'autre a quatre arguments d'entrée de type réel et instancie un objet de classe Matrice2x2 avec
ses quatre coecients.
La méthode destructrice achera un message informant de la destruction de l'objet créé.
2.4 Compléter le chier Matrice2x2.h à l'aide des autres méthodes publiques dénies dans le
cahier des charges ci-dessus.
2.5 Remplir le chier Matrice2x2.cpp an de compléter votre classe objet Matrice2x2 ?
2.6 Tester les fonctionnalités de votre classe objet Matrice2x2 dans le chier TestObjetMatrice.cpp.
Il faudra utiliser toutes les méthodes (hormis la méthode destructrice) et acher les résultats
DUT RT - Semestre 2 2
M2207 - Consolidation des Bases de la Programmation 09/03/2020
2.7 Nous souhaitons mettre dans un objet de classe Matrice2x2 le résultat de la soustraction de deux
autres objets de type Matrice2x2. Par exemple, avec l'instruction Mat=Mat1-Mat2.
Que faut-il faire pour y arriver ? Rajouter cette modication.
2.8 Ajouter dans votre chier Main.cpp un objet nommé MatriceDynamique de classe Matrice2x2
créé non plus de façon statique mais de façon dynamique.
Vous acherez également la valeur du déterminant de MatriceDynamique.
DUT RT - Semestre 2 3