Vous êtes sur la page 1sur 9

TP SUR LES CLASSES EN C++

EXERCICE 1
Exemple 1 : Code source Cpp Exemple 2 : Code source Cpp
#include <iostream> #include <iostream>
using namespace std ; using namespace std ;
class Point class Complexe
{ private : { double re ;
double X , Y ; double im ;
public : public :
Point(double x = 0, double y = 0) ; Complexe( )
Point Add(Point pt) ; { re = im = 0.0 ; }
void Afficher( ) ; Complexe(double a, double b)
double GetX( ) ; { re = a ;
double GetY( ) ; im = b ; }
void SetX(double x) ; void addition(Complexe z)
void SetY(double y) ; { re = re + z.re ;
}; im = im + z.im ; }
Point :: Point(double x, double y) Complexe add(Complexe z)
{ X=x; Y=y; } { double a, b ;
Point Point :: Add(Point pt) a = re + z.re ;
{ Point result(pt.X + X, pt.Y + Y) ; b = im + z.im ;
return result ; } return Complexe(a,b) ; }
void Point :: Afficher( ) Complexe mul(Complexe z)
{ cout<< "(" << X << " ," << Y << " )" ; } { double a, b ;
double Point :: GetX( ) a = re*z.re - im*z.im ;
{ return X ; } b = re*z.im + im*z.re ;
double Point :: GetY( ) return Complexe(a,b) ; }
{ return Y ; } void Afficher( )
void Point :: SetX(double x) { cout<<"( " << re << " + i*" << im << " )" ;
{ X=x;} }
void Point :: SetY(double y) };
{ Y=y;} int main( )
int main( ) { cout << " #### TP2 sur les Classes #### " << endl ;
{ cout << " #### TP1 sur les Classes #### " << endl ; Complexe z1 ;
Point pt1(1,1) ; Complexe z2(2,3) ;
Point pt2,pt3 ; Complexe z3(3,4 );
pt2 = Point(3,1) ; cout<<endl<<" z1 = " ;
cout << "Position de pt1 : " ; z1.Afficher( ) ;
pt1.Afficher() ; cout<<endl<<" z2 = " ;
pt1.SetX( 2 ) ; pt1.SetY( 3 ) ; z2.Afficher( ) ;
cout << endl ; cout<<endl<<" z3 = " ;
cout << "Nouvelle position de pt1 : " ; z3.Afficher( ) ;
pt1.Afficher( ) ; Complexe z4 ;
cout << endl ; z4 = z2.add(z3) ;
cout << "Position de pt2 : " ; cout<<endl<<" z4 = z2 + z3 = " ;
pt2.Afficher( ) ; z4.Afficher( ) ;
pt3 = pt1.Add(pt2) ; Complexe z5 ;
cout << endl ; z5 = z2.mul(z3) ;
cout << "Position de pt3 : " ; cout<<endl<<" z5 = z2 * z3 = " ;
pt3.Afficher( ) ; z5.Afficher( ) ;
cout << endl ; }
return 0 ;
}

1- Analyser les deux codes sources ci-dessus (comprendre chaque ligne du code et les résultats obtenus).
2- Modifier la classe Point pour ajouter la fonction membre « Distance » qui calcule la distance entre deux points :
c'est- à-dire entre le point courant et un point passé en paramètre à la fonction. Tester cette méthode dans le
programme.
3- Modifier la classe Complexe pour ajouter la fonction membre « Module » qui calcule le module d’un nombre
complexe.

Page 1 sur 9
EXERCICE 2
Dans un programme C++, on retrouve la classe Student définie comme suit :

class Student
{ private :
string Nom, Prenom ;
int Notes[10] ;
public :
void saisie ( ) ;
float moyenne ( ) ;
void afficher ( ) ;
bool exae_quo (Student S);
};

1. La classe Student ainsi définie comporte combien d’attributs et combien de méthodes ?


2. Ecrire la méthode « float moyenne ( ) » qui calcule et retourne la moyenne des notes.
3. Ecrire la méthode « bool exae_quo ( Student S ) » qui retourne un booléen « vrai » si deux
étudiants ont la même moyenne et « faux » sinon.

EXERCICE 3
Dans un programme C++, on retrouve la classe Compte définie comme suit :

class Compte
{ private :
int solde = 0 ;
public :
void deposer (int montant) ;
void retirer (int montant) ;
void virerVers (int montant, Compte destination) ;
void afficher ( ) ;
};

1. La classe Compte ainsi définie comporte combien d’attributs et combien de méthodes ?


2. Comment fonctionne la méthode virerVers ? Combien de comptes fait-elle intervenir ?
3. Définir toutes les méthodes de la classe Compte.
4. Ecrire les séquences d’instructions permettant de :
- Créer deux comptes que vous affecterez à deux variable
- Faire un dépôt de 50 000 FCFA et de 100 000 FCFA sur les deux comptes
- Retirer ensuite 30 000 FCFA sur le second compte
- Faire un virement de 25 000 FCFA du premier compte vers le second
- Créer un tableau TABLE de 10 comptes
- Faire un dépôt de 200 000 FCFA plus une somme égale à 100 000 fois l’indice du compte dans le
tableau
- Faire ensuite un virement de 20 000 FCFA de chaque compte vers chacun des comptes qui le
suivent dans le tableau
- Enfin afficher les soldes de tous les comptes

EXERCICE 4
Ecrire un programme en C++ permettant de définir une classe Rectangle et de tester toutes ses méthodes. La
classe Rectangle dont le constructeur prend deux paramètres largeur et hauteur, offre les fonctions de calcul de
périmètre, calcul de surface, affichage, ainsi que les accesseurs et les mutateurs triviaux (lecture et modification de la
largeur et de la hauteur). Pour l’affichage du rectangle, il suffit d’afficher à l’aide d’astérisques (*) le pourtour du
rectangle. Par exemple avec largeur = 6 et hauteur = 3, on affichera : ******
* *
******

Page 2 sur 9
EXERCICE 5
1/ On voudrait gérer les étudiants d’une institution à l’aide d’une classe Etudiant définie par :
Les attributs suivants : - nom : nom d’un étudiant - prenom : prénom d’un étudiant
- tabnotes : tableau contenant les notes d’un étudiant, sachant qu’un étudiant a au total 10 notes.
Les méthodes suivantes :
- void saisie ( ), permettant la saisie d’un étudiant - void affichage ( ), permettant l’affichage d’un étudiant
- float moyenne ( ), retourne comme résultat la moyenne des notes d’un étudiant
- int admis ( ), retourne comme résultat la valeur 1, si un étudiant est admis et la valeur 0, sinon. Un étudiant
est considéré comme étant admis lorsque la moyenne de ses notes est supérieure ou égale à 10.
- int exae_quo (Etudiant E), retourne comme résultat la valeur 1, si deux étudiants ont la même moyenne et
la valeur 0, sinon.
a) Ecrire la classe Etudiant dans le langage C++.
b) Définir également les différentes méthodes de cette classe.

2/ On voudrait maintenant représenter, à l’aide d’une nouvelle classe Etudiant_en_Maitrise, certains étudiants
particuliers dans cette institution qui sont les étudiants en dernière année d’études. Ces étudiants possèdent en effet
un attribut supplémentaire : note_memoire, qui représente la note de leur mémoire de fin d’études. Les méthodes à
associer à cette classe sont les suivantes :
- void saisie ( ), permettant la saisie d’un étudiant en maîtrise
- void affichage ( ), permettant l’affichage d’un étudiant en maîtrise
- float moyenne ( ), retourne comme résultat la moyenne des notes d’un étudiant en maîtrise
- int admis ( ), retourne comme résultat la valeur 1, si un étudiant est admis et la valeur 0, sinon. Un étudiant
en maîtrise est considéré comme étant admis lorsque, d’une part, la moyenne de ses notes est supérieure ou
égale à 10 et d’autre part la note obtenue pour son mémoire de fin d’études est supérieure ou égale à 10.
- int exae_quo (Etudiant_en_Maitrise E), retourne comme résultat la valeur 1, si deux étudiants ont d’une
part la même moyenne et d’autre part, la même note de mémoire et retourne la valeur 0, sinon.
a) Quelles sont les méthodes qui sont à redéfinir dans la classe Etudiant_en_Maitrise ?
b) Ecrire la classe Etudiant_en_Maitrise dans le langage C++.
c) Ecrire également les différentes méthodes de cette classe à redéfinir.

3/ Expliquer la ligne d’instruction suivante et proposer une autre façon d’obtenir le même résultat.
Heure = ( h >= 0 && h <= 23 ) ? h : 0 ;

EXERCICE 6
On définit la classe Horaire suivante :
class Horaire
{ private :
int heure ; // de 0 à 23
int minute ; // de 0 à 59
int seconde ; // de 0 à 59
public :
Horaire( ) ;
Horaire (int = 0, int = 0, int = 0);
void SetHoraire(int, int, int) ;
void SetHeure(int) ;
void SetMinute(int) ;
void SetSeconde(int) ;
int GetHeure( ) ;
int GetMinute( ) ;
int GetSeconde( ) ;
void AfficherMode12h( ) ;
void AfficherMode24h( ) ;
};
1) Ecrire chacune des méthodes définies dans la classe Horaire.
2) Ecrire une méthode bool Egal ( Horaire h ) qui retourne un booléen en cas d’égalité des heures, minutes et
secondes.
3) Ecrire une méthode Horaire HeureSuivante ( ) qui retourne l’heure qu’il fera 1 heure après.

Page 3 sur 9
EXERCICE 7
On voudrait écrire un programme qui permet de :
A-) Créer une classe de base nommée Vehicule. Un Vehicule possède trois membres protégés :
 Annee_achat de type int ;
 prix_achat et prix_courant de type double ;
et les méthodes publiques :
 affiche( ) permet d’afficher les trois membres Annee_achat, prix_achat et prix_courant ;
 calculePrix permet de calculer le membre prix_courant d’un Vehicule à l’aide de la formule :
prix_courant = ( 1.0 – ( 2021 – Annee_achat ) * 0.01 ) * prix_achat ;
 Vehicule( int Annee, double prix ) qui joue le rôle de constructeur de la classe.
B-) Réaliser ensuite une classe nommée Camion dérivée publiquement de la classe Vehicule. Cette classe fille
comprend le membre protégé : Volume de type int ; et les méthodes publiques :
 affiche( ) afin que l ’affichage donne également le membre Volume ;
 calculePrix permet de calculer le membre prix_courant d’un Camion à l’aide de la formule :
prix_courant = ( 1 – ( 0.1 * Volume / 1000 ) ) * prix_achat ;
Camion( int Annee, double prix, int Vol ) B-) Réaliser ensuite une classe nommée Camion dérivée
publiquement de la classe Vehicule. Cette classe fille comprend le membre protégé : Volume de type int ; et les
méthodes publiques :
 affiche( ) afin que l ’affichage donne également le membre Volume ;
 calculePrix permet de calculer le membre prix_courant d’un Camion à l’aide de la formule :
prix_courant = ( 1 – ( 0.1 * Volume / 1000 ) ) * prix_achat ;
 Camion( int Annee, double prix, int Vol ) qui joue le rôle de constructeur.
C-) De plus, définir une classe nommée Voiture dérivée publiquement de la classe mère Vehicule. Cette sous
classe contient trois membres protégés :
 nombre_portes de type int ;
 puissance et kilometrage de type double.
Elle va également redéfinir les méthodes suivantes :
 affiche( ) afin que l ’affichage donne également les trois membres nombre_portes, puissance et
kilometrage ;
 calculePrix permet de calculer le membre prix_courant d’une Voiture à l’aide de la formule :
prix_courant = ( 1 – [ ( 2021 – Annee_achat ) * 0.02 + 0.05 * kilometrage / 10000 ] ) * prix_achat ;
 Voiture( int Annee, double prix, int portes, double cv, double km ) qui joue le rôle de constructeur.
D-) Enfin, écrire le programme principal qui permet d’appeler :
 Un objet de type Vehicule
 Deux objets de type Voiture
 Trois objets de type Camion
Pour chaque objet, le programme principal va appliquer les méthodes affiche( ) et calculePrix( ).

EXERCICE 8
Ecrire un programme C++ qui permet de tester une classe modélisant l’heure (heures, minutes et secondes). La classe
sera appelée Time et devra déclarer tous ses attributs comme étant privés et toutes ses méthodes publiques suivantes :
 Un constructeur avec des valeurs par défaut pour chacun des attributs
 Un constructeur avec comme paramètre une chaine de caractères, qui contient l’heure sous la forme :
"hh:mm:ss" (exemples : "05:38:59" ou encore "23:07:09").
 Un constructeur par copie
 Des getters (un pour chacun des attributs)
 Des setters (un pour chacun des attributs)
 Une méthode afficheTime qui affiche l’heure sous la forme "hh:mm:ss" avec un 0 devant lorsque l’attribut
concerné est inférieur à 10.
 Une fonction amie compare qui permet de comparer deux objets Time et de retourner un entier égal à -1 si le
premier objet en paramètre est le plus grand, 0 si les deux objets sont égaux et 1 si le second objet en paramètre
est le plus grand
 Une méthode changeTime permettant d’incrémenter ou de décrémenter un objet en secondes (seul paramètre
de la méthode). L’opération doit gérer les cas de dépassement de valeurs pour l’un des attributs de l’objet.
Page 4 sur 9
Par exemple :
Exemple 1 : Time t(0,26,53) ; t.changeTime(50) ; // t deviendra 00:27:43
Exemple 2 : Time t(0,26,53) ; t.changeTime(-56) ; // t deviendra 00:25:57
 Une méthode addTime permettant d’additionner deux objets et de ranger le résultat dans un troisième objet
(on fera aussi attention au dépassement de valeurs dans certains cas).

EXERCICE 9
Soit la classe abstraite Personne permettant de représenter un être humain suivant les caractéristiques suivantes : nom
(chaîne de caractères), prenom (chaîne de caractères), age (nombre entier). Cette classe doit aussi posséder les méthodes
suivantes :
 Un constructeur permettant d’initialiser chacun des attributs de la classe
 Un constructeur par copie
 Un getter pour chaque attribut
 Un setter pour chaque attribut
 Une méthode afficher pour afficher toutes les informations d’une personne.
Soient Etudiant et Salarie deux classes qui héritent de la classe abstraite Personne.
La classe Etudiant possède un attribut matricule de type chaîne de caractères, ainsi que les méthodes suivantes :
 Un constructeur permettant d’initialiser chacun des attributs de la classe
 Un constructeur par copie
 Un getter pour le matricule
 Un setter pour le matricule
 Une méthode afficher pour afficher toutes les informations d’une personne (redéfinition de la classe mère).
La classe Salarie possède un attribut salaire de type réel, ainsi que les méthodes suivantes :
 Un constructeur permettant d’initialiser chacun des attributs de la classe
 Un constructeur par copie
 Un getter pour le salaire
 Un setter pour le salaire
 Une méthode afficher pour afficher toutes les informations d’une personne (redéfinition de la classe mère).
Réaliser un programme C++ permettant d’implémenter les trois classes définies précédemment, avec une fonction
principale main dans laquelle vous créerez des instances des classes Etudiant et Salarie et vous afficherez leurs
contenus.

TEST N° 1

1) Que contient une classe en C++ ?


A- Données B- Fonctions C- Les données et les fonctions D- Des tableaux
2) Combien de spécificateurs d’accès existe ?
A- 1 B- 2 C- 3 D- 4
3) Qu’est ce qui est utilisé pour définir un membre d’une classe extérieurement ?
A- # B- :: C- !!$ D- :
4) Quel opérateur, un objet pointeur d’une classe utilise pour accéder à ses membres de données et à ses
fonctions membres ?
A- :: B- . C- -> D- :
5) Quelle est la sortie du code suivant ?
#include <iostream>
using namespace std ; A- 6 – 6 / 6 – 6 / 6 – 6 /
void F ( ) {
static int a = 5 ; int b = 5 ; B- 6 – 6 / 7 – 7 / 8 – 8 /
a++ ; b++ ;
cout << a << “ – “ << b << “ / ” ; C- 6 – 6 / 7 – 6 / 8 – 6 /
}
int main ( ) { D- Aucune de ces réponses n’est vraie.
for (int n = 1 ; n<=3 ; n++) F( ) ;
return 0 ;
}
Page 5 sur 9
6) Laquelle parmi les lignes suivantes est une déclaration de classe valide ?
A- public class A { } B- class A { } C- class A { int x ; }; D- object A { int x ; };
7) Les membres d’une classe en C++ sont par défaut :
A- private B- protected C- public D- public et protected
8) Quelles valeurs aura-t-on dans a et b si l’on écrit en C++ : int a ( 7 ), b ( 5 ) ; ( a < b ) ? a++ : b - - ;
A- a = 8 et b = 5 B- a = 8 et b = 4 C- a = 7 et b = 4 D- a = 7 et b = 5
9) Combien d'arguments un destructeur d'une classe peut-il recevoir ?
A- 0 B- 1 C- 2 D- Aucune de ces réponses
10) L’objet est créé dans :
A- Une classe B- Un Constructeur C- Un Destructeur D- Les Attributs
11) À quoi sert les constructeurs ?
A- Initialiser les objets B- Construire les membres de données
C- À la fois initialiser les objets et construire les données membres D- Supprimer les objets
12) Quel caractère est utilisé pour marquer la fin d’une classe ?
A- : B- ; C- # D- }
13) Lorsque « struct » est utilisé à la place du mot-clé « class », est ce que quelque chose va changer dans le
programme ?
A- L’accès est public par défaut. B- L’accès est privé par défaut.
C- L’accès est protégé par défaut. D- L’accès est refusé.
14) Quel est l’index de l’avant-dernier élément d’un tableau de 10 éléments ?
A- 8 B- 9 C- 10 D- 1
15) Quelle est la valeur de P qui sera affichée à la fin de l’exécution de la suite d’instructions suivante ?
int P( 1 ), Tab[ 10 ] = { 3, 12, 4, 11, 5, 10, 6, 9, 7, 8 } ; A- P = 239500800
for ( int i = 0 ; i < 10 ; i += 2 ) B- P = 95040
{ P = P * Tab[ i ] ; } C- P = 1584
cout << "P = " << P ; D- P = 2520
16) Quel résultat sera-t-il affiché ici ?
int note = 2 ;
switch ( note ) { case 1 : cout << "UN " ; A- DEUX
case 2 : cout << "DEUX " ; B- DEUX TROIS
case 3 : cout << "TROIS " ; break ; C- DEUX TROIS AUTRE
default : cout << "AUTRE " ; } D- UN DEUX TROIS

17) L’opération suivante donne : float X = 12 * 6 / 5 ;


A- X = 14.4 B- X = 14.5 C- X = 15 D- X = 14.0
18) Quel sera l'affichage résultant du code suivant ?
int a ( 10 ) , b ( 5 ) ;
if ( a < b )
A- b B- a C- a b D- 5
cout << " a " ;
cout << " b " ;
19) Quelle est la sortie du code suivant ?
#include <iostream>
using namespace std ; A- a = 10 a = 10 a = 10
void Fonction ( ) { static int a = 5 ; a += 5 ; B- a = 5 a = 10 a = 15
cout << " a = " << a ; } C- a = 15 a = 20 a = 25
int main ( ) D- a = 10 a = 20 a = 30
{ for ( int n = 1 ; n <= 3 ; n++) Fonction ( ) ; E- Aucune bonne réponse
return 0 ; }
20) Quelle est la sortie du code C++ suivant ?
#include <iostream>
using namespace std ; A- 4 7 11
void Somme ( int &a, int b, int &c ) B- 4 1 11
{ a=b+c; b=a+c; c=a+b; } C- 2 7 11
int main ( ) D- 2 1 3
{ int x( 2 ), y( 1 ), z( 3 ) ; Somme( x, y, z ) ; E- Aucune bonne réponse
cout << x << " " << y << " " << z ; return 0 ; }
21) Comment appelle-t-on une variable chargée de contenir l’adresse d’une autre variable ?
A- Constante B- Hexadécimale C- Compteur D- Pointeur E- Aucune bonne réponse
Page 6 sur 9
22) Quel sera l'affichage résultant du code suivant ?
int c ( 0 ) , d ( 5 ) ;
A- 5 B- c C- d
if ( c ) cout << c ;
D- 0 E- Aucune bonne réponse
else cout << d ;
23) Quel sera l'affichage résultant du code suivant ?
int n ( 3 ) , p ( 5 ) ;
A- 15
switch ( p - n )
B- 12
{ case 1 : cout << p + n ;
C- 1512
case 2 : cout << p * n ;
D- 1
case 3 : cout << p / n ;
E- Aucune bonne réponse
default : cout << p % n ; }
24) Quel sera l'affichage résultant du code suivant ?
int u ;
A- 51015 B- 151015
for ( u = 1 ; u < 20 ; u ++ )
C- 5101520 D- 15101520
{ if (u % 5 = = 0) { cout << u ; }
E- Aucune bonne réponse
}
25) Combien de fois le message UATM ! sera-t-il affiché ici ?
int Compt = 0 ;
A- 0 fois B- 5 fois
while ( Compt < 40 )
C- 3 fois D- 6 fois
{ cout << " UATM ! "<< endl ; Compt += 10 ;
E- Aucune bonne réponse
}
26) Combien de fois le message GASA ! sera-t-il affiché ici ?
int Compteur = 5 ;
A- 0 fois B- 3 fois
do { cout << " GASA ! "<< endl ;
C- 4 fois D- 2 fois
Compteur = Compteur - 2 ;
E- Aucune bonne réponse
} while ( Compteur > 1 ) ;
27) Combien de fois le message GE2 ! sera-t-il affiché ici ?
for ( int C = 1 ; C < = 10 ; C += 4 ) A- 3 fois B- 0 fois C- 1 fois
{ cout << " GE2 ! "<< endl ; C ++ ; } D- 2 fois E- Aucune bonne réponse
28) Combien de fois le message GASA ! sera-t-il affiché ici ?
for ( int i = 1 ; i > = 5 ; i ++ ) A- 2 fois B- 1 fois C- 0 fois
{ cout << " GASA ! "<< endl ; } D- 3 fois E- Aucune bonne réponse
29) Quel sera l'affichage résultant du code suivant ?
int TAB [ 2 ] [ 3 ] = { { 1, 5, 7 } , { 8, 4, 3 } } ; A- 7 B- 1 C- 5
cout<< TAB [ 0 ] [ 1 ] << endl ; D- 8 E- 4
30) Quel caractère termine chaque chaine de caractères ? A- '\0' B- '/0' C- '0' D- '/n' E- '\n'
31) Quel sera l'affichage résultant du code suivant ?
int A ( 5 ) , *PTR ; A- A = 5 B- A = 10 C- A = 15
PTR = &A ; *PTR = *PTR + 5 ; D- A = 0xfe546a
cout << " A = " << *P << endl ; E- Aucune bonne réponse
32) Comment affecter 19 au champ Jour d’une variable D de type structure DATE ?
A- Jour . DATE . D = 19 ; B- DATE . D . Jour = 19 ; C- Jour . D= 19 ;
D- DATE . Jour = 19 ; E- Aucune bonne réponse
33) Quel est le résultat du programme suivant ?
#include <iostream> A- 3 2 1 0
using namespace std ;
void f( ) { static int i = 3 ; B- 3 2 1
cout<< i ;
if ( - -i ) f( ) ; C- 3 3 3
}
main( ) { f( ) ; D- Erreur de compilation
}
34) Si on écrit en C++ if(a) b ; else c ; l’instruction c est exécutée :
A- quelle que soit la valeur de a B- tout de suite après b C- si a est vrai D- si a est faux
35) La boucle for présente une syntaxe : for(a ; b ; c). b est :
A- la valeur finale de la boucle B- la condition pour terminer la boucle
C- la condition pour ne pas terminer la boucle D- le nom de la boucle
Page 7 sur 9
36) Quelle est la sortie du code suivant ?
#include <iostream> A- 1
using namespace std ; 11
int main( ) { B- 0
int a = 1 , b = 1 ; 22
cout << ( ++a && ++b ) << endl ; C- 1
cout << a << " " << b ; 22
return 0 ; D- Erreur de compilation.
}
37) On appelle procédure :
A- une fonction sans aucun paramètre B- une fonction qui ne renvoie rien
C- un ensemble de fonctions D- une fonction nommée void
38) Quelle est la sortie du code suivant après la saisie de 3 ?

39) Quelle est la sortie du code suivant après la saisie de 3 ?

40) Quelle ligne placer dans les … pour faire fonctionner ce programme ?

Page 8 sur 9
41) Quelle est la sortie du code suivant ?
#include <iostream>
using namespace std ;
class Cercle { A- Volume boite1 : 200
double rayon ;
public : B- Volume boite1 : 314.28
Cercle( double r ) : rayon( r ) { }
double aire( ) { return rayon*rayon*22/7 ; } C- Volume boite1 : 6285.71
};
class Cylindre { D- Autre réponse à préciser.
Cercle base ;
double hauteur ;
public :
Cylindre( double r, double h ) : base( r ), hauteur( h ) { }
double volume( ) { return base.aire( ) * hauteur ; }
};
int main( ) {
Cylindre boite1( 10 , 20 ) ;
cout<< “Volume boite1 : ”<<boite1.volume ( )” <<endl ;
return 0 ;
}

42) Quelle est la sortie du code suivant ?


#include <iostream>
using namespace std ; A- 10 20
class Polygon {
protected : B- 20 10
int width, height ;
public : C- 20
void set_values ( int a, int b ) { width = a ; height = b ; } 10
};
class Rectangle : public Polygon { D- Autre réponse à préciser.
public :
int area ( ) { return width * height ; }
};
class Triangle : public Polygon {
public :
int area ( ) { return width * height / 2 ; }
};
int main ( )
{ Rectangle rect ;
Triangle trgl ;
rect.set_values (4,5);
trgl.set_values (4,5);
cout << rect.area ( ) << endl ;
cout << trgl.area ( ) << endl ;
return 0 ;
}

Page 9 sur 9

Vous aimerez peut-être aussi