Exercice 148 (67 revisité)
Ancien énoncé
Réaliser une classe nommée set_char permettant de manipuler des ensembles de
caractères. 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 caractère donné lui appartient.
Ici, on n’effectuera aucune allocation dynamique d’emplacements mémoire. Il faudra
donc prévoir, en membre donnée, un tableau de taille fixe.
Écrire, en outre, un programme (main) utilisant la classe set_char pour déterminer le
nombre de caractères différents contenus dans un mot lu en donnée.
Commentaires
Le conteneur set peut jouer le rôle de la classe demandée set_char, à condition de
supprimer de l’énoncé la contrainte relative à l’absence d’allocation dynamique. En
effet, elle n’a plus de raison d’être, les fonctions membre de la classe set allouant
automatiquement la place nécessaire au fur et à mesure des besoins.
Voici ce que pourrait devenir le programme de test fourni précédemment dans le
chapitre 3. On notera que la fonction membre size fournit le nombre d’éléments de
l’ensemble, tandis que la fonction membre insert permet tout naturellement l’insertion
d’un élément. Quant à la fonction count, elle fournit le nombre d’éléments de valeur
donnée figurant dans l’ensemble ; son résultat est donc toujours soit 0, soit 1.
#include
#include // pour la classe set
using namespace std ;
main()
{ set ens ; // voir remarque 1 ci-après
char mot [81] ;
cout << "donnez un mot : " ;
cin >> mot ;
int i ;
for (i=0 ; i
cout << "il contient " << ens.size() << " caracteres differents\n" ;
if (ens.count('e')) cout << "le caractere e est present\n" ;
else cout << "le caractere e n'est pas present\n" ;
}
donnez un mot : bonjour
il contient 6 caracteres differents
371
Ancien énoncé
Réaliser une classe nommée set_char permettant de manipuler des ensembles de
caractères. 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 caractère donné lui appartient.
Ici, on n’effectuera aucune allocation dynamique d’emplacements mémoire. Il faudra
donc prévoir, en membre donnée, un tableau de taille fixe.
Écrire, en outre, un programme (main) utilisant la classe set_char pour déterminer le
nombre de caractères différents contenus dans un mot lu en donnée.
Commentaires
Le conteneur set
supprimer de l’énoncé la contrainte relative à l’absence d’allocation dynamique. En
effet, elle n’a plus de raison d’être, les fonctions membre de la classe set
automatiquement la place nécessaire au fur et à mesure des besoins.
Voici ce que pourrait devenir le programme de test fourni précédemment dans le
chapitre 3. On notera que la fonction membre size fournit le nombre d’éléments de
l’ensemble, tandis que la fonction membre insert permet tout naturellement l’insertion
d’un élément. Quant à la fonction count, elle fournit le nombre d’éléments de valeur
donnée figurant dans l’ensemble ; son résultat est donc toujours soit 0, soit 1.
#include
#include
using namespace std ;
main()
{ set
char mot [81] ;
cout << "donnez un mot : " ;
cin >> mot ;
int i ;
for (i=0 ; i
if (ens.count('e')) cout << "le caractere e est present\n" ;
else cout << "le caractere e n'est pas present\n" ;
}
donnez un mot : bonjour
il contient 6 caracteres differents
371
