Neuvaine de la Pentecôte avec des textes de saint Jean Eudes
TP3 Atelier C++/ GL2 INSAT / Tunisie
1. [TP N°3 : INITIATION AU MONDE DE LA PROGRAMMATION C++] Atelier C++
INSTITUT NATIONAL DES SCIENCES APPLIQUEES ET DE TECHNOLOGIE - TUNISIE 1
Prof : Mariem ZAOUALI – Niveau : GL2
1. Objectif de la séance
Le but de la séance est de manipuler les notions suivantes :
Références et pointeurs
Le constructeur de recopie
Les STL
2. Références & pointeurs - 2ème partie
a. Trouver la ligne de code incorrecte :
N° Propositions N° Propositions
1 int x, *ptr;
&x = ptr;
6 float level;
int fptr = &level;
2 int x, *ptr;
*ptr = &x;
7 int ivalue=1;
int *iptr = &ivalue;
3 int x, *ptr;
ptr = &x;
ptr = 100; // Store 100 in x
cout << x << endl;
8 void doubleVal(int val)
{
*val *= 2;
}
4 int numbers[] = {10, 20, 30, 40, 50};
cout << "The third element in the array is ";
cout << *numbers + 3 << endl;
9 const int array[] = {1,2,3} ;
int *ptr = array ;
5 double books[20], brochure[20];
double *dptr;
dptr = books;
dptr = brochure;
books = brochure;
brochure = dptr;
10 int pint ;
pint = new int ;
b. Manipulation des tableaux
Une association de charité a reçu les sommes d’argents suivants dans l’ordre suivant
100 DT 520 DT 30 DT 70 DT 90 DT 25 DT 60 DT 50 DT 45 DT 65 DT
Cette association veut trier les sommes qu’elle a reçues, dans un ordre croissant, sans pour autant perturber
l’ordre de réception des sommes d’argent.
2. [TP N°3 : INITIATION AU MONDE DE LA PROGRAMMATION C++] Atelier C++
INSTITUT NATIONAL DES SCIENCES APPLIQUEES ET DE TECHNOLOGIE - TUNISIE 2
Ecrivez une classe (proposez sa nomination) et proposez deux méthodes permettant de trier le tableau des
sommes d’argent dans l’ordre croissant. Affichez le tableau avec les sommes non triées et le tableau avec les
sommes triées.
3. Le constructeur de recopie
C’est quoi l’intérêt d’un constructeur par recopie ?
Soit le constructeur par recopie de la classe Point suivant :
Point :: Point (const Point &pt){ …}
C’est quoi l’intérêt du passage par référence et l’utilisation du terme const ?
Ajouter à l’exercice précédent un constructeur de recopie, permettant de recopier le contenu du tableau
de donation.
4. Les STL – utilisation du vecteur
a. On va reprendre l’exercice de la gestion des étudiants du TP précédent et on va remplacer
l’utilisation des tableaux par l’utilisation de la classe vector. Remplacez le tableau « Etudiants»
par le vector.
Modifier le constructeur.
Modifier la méthode affichage de la classe matière où vous parcourez les étudiants et
vous affichez les objets de type étudiants
Ajouter une méthode pour vider le vecteur des étudiants
Ajouter la méthode trouver Etudiant par Numéro téléphone.
5. Homework : Map
a. Travail demandé (voir Annexe pour comprendre la notion de Map)
On se propose de développer un programme qui permettra d’ajouter, pour chaque année, l’évènement/les
évènements correspondant(s). Pour ce faire, on utilisera une structure de données adaptée, c’est la map.
Chaque événement est stocké dans une plusieurs std::string, donc si les évènements auront lieux pour la même
année, pensez à faire une concaténation.
Ecrivez une classe pour résoudre cet exercice (à vous de choisir son nom)
Développez la méthode add_event pour rajouter un évènement (vous utiliserez
pair<iterator, bool> insert(const value_type& x);
3. [TP N°3 : INITIATION AU MONDE DE LA PROGRAMMATION C++] Atelier C++
INSTITUT NATIONAL DES SCIENCES APPLIQUEES ET DE TECHNOLOGIE - TUNISIE 3
Développez la méthode find_event_by_date pour afficher les évènements de cette
année. L’affichage doit être de cette manière : (exemple de 3 évènements à l’an
2000)
2000 : Event 1
2000 : Event 2
2000 : Event 3
Développez la méthode modify_event pour modifier l’événement à une date
donnée. (Pensez à résoudre le problème où vous avez plusieurs évènements pour
une seule date)
b. Annexe : Map
Les éléments du conteneur « Map » sont une paire formée d’une clé jumelée à une valeur
Les éléments sont triés selon leur clé.
Chacune des clés ne peut exister qu’une fois
On rajoute « #include<map> » pour pouvoir utiliser ce conteneur.
Exemple 1 d’insertion dans la map
Exemple 2 d’insertion avec la méthode « insert »
Pour parcourir les éléments d’un conteneur de type map, nous aurons besoin d’un itérateur.
#include <iostream>
#include <map>
int main ()
std::map<std::string,unsigned> map_mois_idx;
map_mois_idx["janvier"] = 1;
map_mois_idx["février"] = 2;
4. [TP N°3 : INITIATION AU MONDE DE LA PROGRAMMATION C++] Atelier C++
INSTITUT NATIONAL DES SCIENCES APPLIQUEES ET DE TECHNOLOGIE - TUNISIE 4
{
std::map<char,int> mymap;
mymap['b'] = 100;
mymap['a'] = 200;
mymap['c'] = 300;
// show content:
for (std::map<char,int>::iterator it=mymap.begin();
it!=mymap.end(); ++it)
//First refers to the Key & Second refers to the Value
std::cout << it->first << " => " << it->second << 'n';
return 0;
}
Pour déterminer d’autres fonctions pouvant être appelées sur le conteneur map, visitez ce
site : http://www.cplusplus.com/reference/map/map/#types