Université Libre de Bruxelles							2007-2008
Faculté des Sciences Appliquées
Cours INFO-H-405
Prof. H. Bersini

Approfondissement de la programmation orientée objet
INFO-H-405 : TP3

C. Philemotte et H. Bersini.
Exercice 1 :
Ecrivez un programme qui accomplira les tâches suivantes :
•	prendre en entrée une succession de nombres entiers positifs,
•	sauver cette séquence dans un vecteur,
•	afficher à l'aide d'un itérateur le vecteur,
•	copier le vecteur dans une autre collection,
•	vérifier dans la copie s'il y a des doublons ou non, le cas échéant supprimer les,
•	comparer les deux collections, et afficher la collection sans doublon,
•	et modifier le programme pour qu'il lise sur un fichier la séquence, et qu'il produise un fichier avec les résultats.
Connaissances nécessaires : vector, list, iterator, adaptor, ifstream, ofstream
Exercice 2 :
Ecrivez une fonction permettant la recherche dichotomique binary_search qui renverra un pointeur constant sur l'élément trouvé ou NULL dans le cas contraire :
•	faites une fonction classique recevant un tableau d'entier, le nombre d'éléments et la clef de recherche,
•	templatiser la fonction de telle manière à ce que le type de données soit générique,
•	modifier la valeur de retour NULL vers un pointeur après le dernier élément du container,
•	remplacer le tableau par des pointeurs dans la philosophie des itérateurs first et last,
•	spécifier le type des itérateurs comme des RandomAccessIterator, et donner une raison de l'intérêt de ce type d'itérateurs,
•	et utiliser votre fonction dans un programme.
Connaissances utilisées : template et iterator
Exercice 3 :
Ecrivez un objet générateur qui peut être utilisé par l'algorithme STL "generate" pour remplir un container selon une progression arithmétique. Il doit être possible de spécifier la valeur de départ et la raison de telle manière que toute la séquence forme une progression arithmétique. Générer ensuite deux containers avec un même nombre d'entiers. Créez ensuite un container, dont les éléments sont la somme des éléments respectifs des deux containers initiaux.
Connaissances nécessaires : algorithm et function objects