Exercice 77
Énoncé
1. Réaliser une classe nommée set_int permettant de manipuler des ensembles de
nombres entiers. On devra pouvoir réaliser sur un tel ensemble les opérations
classiques suivantes : lui ajouter un nouvel élément, connaître son cardinal
(nombre d’éléments), savoir si un entier donné lui appartient.
Ici, on conservera les différents éléments de l’ensemble dans un tableau alloué
dynamiquement par le constructeur. Un argument (auquel on pourra prévoir une
valeur par défaut) lui précisera le nombre maximal d’éléments de l’ensemble.
2. Écrire, en outre, un programme (main) utilisant la classe set_int pour déterminer le
nombre d’entiers différents contenus dans 20 entiers lus en données.
3. Que faudrait-il faire pour qu’un objet du type set_int puisse être transmis par
valeur, soit comme argument d’appel, soit comme valeur de retour d’une
fonction ?
N.B. Le chapitre 17 vous montrera comment résoudre cet exercice à l’aide des
composants standard introduits par la norme, qu’il ne faut pas chercher à utiliser ici.
1. La déclaration de la classe découle de l’énoncé :
/* fichier SETINT1.H */
/* déclaration de la classe set_int */
class set_int
{
int * adval ; // adresse du tableau des valeurs
int nmax ; // nombre maxi d'éléments
int nelem ; // nombre courant d'éléments
public :
set_int (int = 20) ; // constructeur
~set_int () ; // destructeur
void ajoute (int) ; // ajout d'un élément
int appartient (int) ; // appartenance d'un élément
int cardinal () ; // cardinal de l'ensemble
} ;
Le membre donnée adval est destiné à pointer sur le tableau d’entiers qui sera alloué par
le constructeur. Le membre nmax représentera la taille de ce tableau, tandis que nelem
fournira le nombre effectif d’entiers stockés dans ce tableau. Ces entiers seront, cette
fois, rangés dans l’ordre où ils seront fournis à ajoute, et non plus à un emplacement
173
Énoncé
1. Réaliser une classe nommée set_int permettant de manipuler des ensembles de
nombres entiers. On devra pouvoir réaliser sur un tel ensemble les opérations
classiques suivantes : lui ajouter un nouvel élément, connaître son cardinal
(nombre d’éléments), savoir si un entier donné lui appartient.
Ici, on conservera les différents éléments de l’ensemble dans un tableau alloué
dynamiquement par le constructeur. Un argument (auquel on pourra prévoir une
valeur par défaut) lui précisera le nombre maximal d’éléments de l’ensemble.
2. Écrire, en outre, un programme (main) utilisant la classe set_int pour déterminer le
nombre d’entiers différents contenus dans 20 entiers lus en données.
3. Que faudrait-il faire pour qu’un objet du type set_int puisse être transmis par
valeur, soit comme argument d’appel, soit comme valeur de retour d’une
fonction ?
N.B. Le chapitre 17 vous montrera comment résoudre cet exercice à l’aide des
composants standard introduits par la norme, qu’il ne faut pas chercher à utiliser ici.
1. La déclaration de la classe découle de l’énoncé :
/* fichier SETINT1.H */
/* déclaration de la classe set_int */
class set_int
{
int * adval ; // adresse du tableau des valeurs
int nmax ; // nombre maxi d'éléments
int nelem ; // nombre courant d'éléments
public :
set_int (int = 20) ; // constructeur
~set_int () ; // destructeur
void ajoute (int) ; // ajout d'un élément
int appartient (int) ; // appartenance d'un élément
int cardinal () ; // cardinal de l'ensemble
} ;
Le membre donnée adval est destiné à pointer sur le tableau d’entiers qui sera alloué par
le constructeur. Le membre nmax représentera la taille de ce tableau, tandis que nelem
fournira le nombre effectif d’entiers stockés dans ce tableau. Ces entiers seront, cette
fois, rangés dans l’ordre où ils seront fournis à ajoute, et non plus à un emplacement
173
