Bonsoir,
je travaille sur un exercice c++, que je n'ai pas pu résoudre, qui demande de concevoir une classe qui manipule des ensembles d'entiers allouées dynamiquement dans un tableau. le livre où je travail propose comme solution à l'exercice veuillez voir ci-dessous.
ma question svp c'est l'explication du comportement des méthodes ajoute() et appartient()
merci

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* 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
} ;
Voici la définition de notre classe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include "setint1.h"
set_int::set_int (int dim)
{ adval = new int [nmax = dim] ; // allocation tableau de valeurs
nelem = 0 ;
}
set_int::~set_int ()
{ delete adval ; // libération tableau de valeurs
}
void set_int::ajoute (int nb)
{ // on examine si nb appartient déjà à l'ensemble
// en utilisant la fonction membre appartient
// s'il n'y appartient pas et si l'ensemble n'est pas plein
// on l'ajoute
if (!appartient (nb) && (nelem<nmax)) adval [nelem++] = nb ;
}
int set_int::appartient (int nb)
{ int i=0 ;
// on examine si nb appartient déjà à l'ensemble
// (si ce n'est pas le cas, i vaudra nele en fin de boucle)
while ( (i<nelem) && (adval[i] != nb) ) i++ ;
return (i<nelem) ;
}
int set_int::cardinal ()
{ return nelem ;
}