IFT1166 - igt.net

... de pratique libre (P. L.) et des séances de révision (solution des devoirs,
solution de quelques anciennes questions d'examens). .... Critères de correction.

Part of the document


IFT1166 A+B et L+M
POO avec C++ |Énoncé du TP #2
35 points |Session d'été 2005 | |Chargé de cours : Le Van Nguyen Do you have advice for beginning computer
science student?
- Keep things simple. Find real problems and solve
them in the
simplest possible way.
Most of all, have fun with everything you do
and make sure
everyone around you is having fun! Radia Perlman
Sun
Microsystem (U.S.A.) Modalités : À remettre, au plus tard, dimanche le 19 juin,
avant la fermeture des laboratoires.
(Chaque jour de retard entraîne une pénalité de 10 points.)
Toutes les matières du TP2 sont demandées à l'intra => essayez de faire le
TP2 avant l'intra malgré que la remise du TP2 aura lieu après l'intra. Le travail est corrigé sur 35 points (35 % des travaux pratiques). Les travaux se font seul ou en équipe de deux, au maximum.
(Vous ne remettez alors qu'un seul travail.) Remise des travaux : Vous devez remettre vos travaux sur papier, ainsi que de façon
électronique.
(Cette procédure vous sera expliquée par vos démonstrateurs.)
Pour la remise papier, imprimez vos codes sources, ainsi que les
résultats de l'exécution de vos programmes (placés en commentaire à la
suite de vos programmes), et attachez-les à une page de remise de
travaux (disponible sur le site du cours).
Remettez ensuite vos travaux à vos démonstrateurs, à la réceptionniste
du campus Longueuil, ou dans une des boîtes de remise à l'Université
de Montréal.
N'oubliez pas de bien identifier vos travaux, tant sur papier que dans
votre programme. Indiquez votre nom et nom d'usager dans l'entête dans
chacun de vos programmes. Si vous travaillez en équipe, pensez à
indiquer les coordonnées des deux coéquipiers !
Dépannage : - Consultez le site du cours régulièrement, il contient de nombreuses
informations, mises à jour régulièrement, concernant les travaux et la
matière du cours :
http://www.iro.umontreal.ca/~dift1166
- Profitez des périodes de travaux pratiques (démonstration), des
périodes de pratique libre (P. L.) et des séances de révision
(solution des devoirs, solution de quelques anciennes questions
d'examens). Des auxiliaires pourront vous venir en aide dans la
réalisation de vos travaux. Pour l'horaire, veuillez consulter le site
Web de la DESI :
http://www.desi.umontreal.ca/
- Faites appel à vos démonstrateurs, en écrivant à leur adresse de
courriel :
dift1166@iro.umontreal.ca (Indiquez le sigle et la section cours,
ainsi que le numéro du travail dans le sujet de votre message.)
- Consultez la FAQ (questions fréquemment posées) sur le site du cours. Numéro 1 (10 points : encapsulation, string, tableau d'objets) (Les matières du numéro 1 sont présentées durant la semaine du 16 mai.
Certaines
fonctions membres sont expliquées en classe) Réalisez un programme en C++ qui comporte la classe incomplète suivante : class Etudiant
{
private:
string codePerm; // exemple "TREJ15028009"
int nbCafe; // nombre de tasses de café consommées par jour
public:
// constructeurs, méthodes à écrire
char getSexe()const { return . . . }
int getAge() const
{
return 105 - atoi(codePerm.substr(8, 2).c_str());
}
. . .
}; Complétez la classe, en réalisant des constructeurs et autres fonctions
membres appropriées afin de satisfaire aux exigences suivantes : 1. Dans la première démonstration (fonction demo1()) du fonctionnement de
cette classe, on instancie (construit) deux objets de la classe
Etudiant :
. etud1 : avec code permanent "TREJ15028009" est né le 15 février
1980. Il consomme 3 tasses de café par jour.
. etud2 : avec code permanent "CHAN27568503" est née le 27 juin 1985.
Elle consomme 1 tasse de café par jour (valeur par défaut).
On affiche les informations de ces deux étudiants comme suit : Informations de TREJ15028009
- sexe : masculin
- age a 2005 : 25 an(s)
- cafe consomme : 3 tasse(s) par jour
Informations de CHAN27568503
- sexe : feminin
- age a 2005 : 20 an(s)
- cafe consomme : 1 tasse(s) par jour
Déterminez et affichez les informations de l'étudiant qui consomme
plus de café entre etud1 et etud2.
Cette première démonstration permet aussi d'afficher la consommation
de café originale de l'objet etud1, de réduire cette consommation à
trois tasses de moins et de réafficher la consommation après la
réduction.
Réaffichez les informations de l'étudiant qui consomme plus de café
entre etud1 et etud2.
2. Dans la deuxième démonstration (fonction demo2()) du fonctionnement de
cette classe, on déclare et initialise un tableau de 5 étudiants, par
exemple :
Etudiant etud[] = {
Etudiant("TREJ15028009", 2),
Etudiant("CHAN27568503"),
Etudiant("ARCP02067001", 5),
Etudiant("LAFJ31628104", 0),
Etudiant("TREM01128607")
};
int nbEtud = sizeof(etud) / sizeof(Etudiant);
a) affichez le contenu de ce tableau.
b) supprimez le deuxième et le troisième étudiant puis affichez le
contenu du tableau.
c) déterminez et affichez les informations de l'étudiant le plus
âgé dans le tableau restant. Critères de correction Classe Etudiant, pointeur this, méthodes get, set, ... 3 points
Bon fonctionnement 4 points
Présentation, qualité, etc. 3 points
Numéro 2 (10 points : surcharge des opérateurs, tableau dynamique d'objets) (Une partie des matières du numéro 2 sont présentées durant la semaine du
16 mai.
Le reste seront présentées dans la semaine du 23 mai) En classe, on a expliqué l'exemple tab_dyna.cpp pour un tableau dynamique
des structures; chaque élément de ce tableau est une structure de type
Nation.
Adaptez l'exemple pour un tableau dynamique de pays. Chaque élément sera un
objet d'une classe Nation. Le programme permettra :
. de surcharger l'opérateur < pour trier ce tableau des pays selon
leur population.
On exige, par ailleurs, un patron du tri par sélection.
. de surcharger l'opérateur d'affichage