Exercice 156 (142 revisité)
Ancien énoncé
Réaliser une classe nommée set_int permettant de manipuler des ensembles de
nombres entiers. Le nombre maximal d’entiers que pourra contenir l’ensemble sera
précisé au constructeur qui allouera dynamiquement l’espace nécessaire. On
prévoira les opérateurs suivants (e désigne un élément de type set_int et n un entier :
• <<, tel que e<
• %, tel que n%e vale 1 si n appartient à e et 0 sinon ;
• <<, tel que flot << e envoie le contenu de l’ensemble e sur le flot indiqué, sous la
forme :
[entier1, entier2, ... entiern]
La fonction membre cardinal fournira le nombre d’éléments de l’ensemble. Enfin, on
s’arrangera pour que l’affectation ou la transmission par valeur d’objets de type
set_int ne pose aucun problème (on acceptera la duplication complète d’objets).
Commentaires
Si l’on ne s’intéresse qu’aux seules fonctionnalités de la classe, en dehors de la sortie
sur un flot, celles-ci sont fournies intégralement par le composant standard set. En
ce qui concerne la sortie sur un flot, on dispose de plusieurs démarches. On peut bien
sûr la programmer au fur et à mesure des besoins, en écrivant à chaque fois les
quelques instructions de parcours de l’ensemble :
set ens ;
set::iteratos ie ;
.....
for (ie=ens.begin() ; ie!=ens.end() ; ie++) cout << *ie << " " ;
On peut aussi en faire une fonction ordinaire, comme dans cet exemple, analogue à
l’exemple d’utilisation de l’exercice du chapitre 16 :
#include
#include
using namespace std ;
void affiche (set) ;
main()
{ void fct (set) ;
void fctref (set &) ;
387
Ancien énoncé
Réaliser une classe nommée set_int permettant de manipuler des ensembles de
nombres entiers. Le nombre maximal d’entiers que pourra contenir l’ensemble sera
précisé au constructeur qui allouera dynamiquement l’espace nécessaire. On
prévoira les opérateurs suivants (e désigne un élément de type set_int et n un entier :
• <<, tel que e<
• <<, tel que flot << e envoie le contenu de l’ensemble e sur le flot indiqué, sous la
forme :
[entier1, entier2, ... entiern]
La fonction membre cardinal fournira le nombre d’éléments de l’ensemble. Enfin, on
s’arrangera pour que l’affectation ou la transmission par valeur d’objets de type
set_int ne pose aucun problème (on acceptera la duplication complète d’objets).
Commentaires
Si l’on ne s’intéresse qu’aux seules fonctionnalités de la classe, en dehors de la sortie
sur un flot, celles-ci sont fournies intégralement par le composant standard set
ce qui concerne la sortie sur un flot, on dispose de plusieurs démarches. On peut bien
sûr la programmer au fur et à mesure des besoins, en écrivant à chaque fois les
quelques instructions de parcours de l’ensemble :
set
set
.....
for (ie=ens.begin() ; ie!=ens.end() ; ie++) cout << *ie << " " ;
On peut aussi en faire une fonction ordinaire, comme dans cet exemple, analogue à
l’exemple d’utilisation de l’exercice du chapitre 16 :
#include
#include
using namespace std ;
void affiche (set
main()
{ void fct (set
void fctref (set
387
