Vous êtes sur la page 1sur 4

[TP N°3 : INITIATION AU MONDE DE LA PROGRAMMATION C++] Atelier C++

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; 6 float level;
&x = ptr; int fptr = &level;

2 int x, *ptr; 7 int ivalue=1;


*ptr = &x; int *iptr = &ivalue;

3 int x, *ptr; 8 void doubleVal(int val)


ptr = &x; {
ptr = 100; // Store 100 in x *val *= 2;
cout << x << endl; }

4 int numbers[] = {10, 20, 30, 40, 50}; 9 const int array[] = {1,2,3} ;
cout << "The third element in the array is "; int *ptr = array ;
cout << *numbers + 3 << endl;

5 double books[20], brochure[20]; 10 int pint ;


double *dptr; pint = new int ;

dptr = books;
dptr = brochure;

books = brochure;
brochure = dptr;

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.

INSTITUT NATIONAL DES SCIENCES APPLIQUEES ET DE TECHNOLOGIE - TUNISIE 1


[TP N°3 : INITIATION AU MONDE DE LA PROGRAMMATION C++] Atelier C++

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);

INSTITUT NATIONAL DES SCIENCES APPLIQUEES ET DE TECHNOLOGIE - TUNISIE 2


[TP N°3 : INITIATION AU MONDE DE LA PROGRAMMATION C++] Atelier C++

 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

std::map<std::string,unsigned> map_mois_idx;
map_mois_idx["janvier"] = 1;
map_mois_idx["février"] = 2;

 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 ()

INSTITUT NATIONAL DES SCIENCES APPLIQUEES ET DE TECHNOLOGIE - TUNISIE 3


[TP N°3 : INITIATION AU MONDE DE LA PROGRAMMATION C++] Atelier C++

{
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

INSTITUT NATIONAL DES SCIENCES APPLIQUEES ET DE TECHNOLOGIE - TUNISIE 4

Vous aimerez peut-être aussi