tp3 atelier c++/ gl2 insat / tunisie

4
[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 : Propositions 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.

Upload: mariem-zaouali

Post on 07-Aug-2015

64 views

Category:

Education


2 download

TRANSCRIPT

Page 1: TP3 Atelier C++/ GL2 INSAT / Tunisie

[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.

Page 2: TP3 Atelier C++/ GL2 INSAT / Tunisie

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

Page 3: TP3 Atelier C++/ GL2 INSAT / Tunisie

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

Page 4: TP3 Atelier C++/ GL2 INSAT / Tunisie

[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