Vous êtes sur la page 1sur 3

D

epartement dInformatique
Facult
e des Sciences, Universit
e Ibn Zohr
Agadir
TD-3, C++, SMI5
Exercice 1 :
Donner la sortie du programme C++ suivant. Preciser le nombre dobjets crees et celui
dobjets detruits.
#include<iostream.h>
class point{
int abs, ord;
public:
point(){
cout<<"++ point par defaut"<<endl;
abs=ord=0;
}
point(int a, int b){
cout<<"++ point normal"<<endl;
abs=a; ord=b;
}
point(point & p){
cout<<"++ point clonage"<<endl; abs=p.abs; ord=p.ord;
}
~point(){
cout<<"-- point "<<endl;
}
};
class

droite{
point s1,s2;
public:
droite(){
cout<<"++
}
droite(int a, int
cout<<"++
}
~droite(){
cout<<"-}
};
void main(){
point a, b(1,2);
point *d=new point(b);
point *e=new point;
droite t(1,2,3,4);
}

droite par defaut"<<endl;


b, int c, int d):s1(a,b),s2(c,d){
droite normal"<<endl;

droite "<<endl;

Exercice 2 :
Soit une classe vecteur3d definie comme suit:
class vecteur3d
{
float x,y,z;

public:
vecteur3d(float c1=0.0, float c2=0.0, float c3=0.0)
{x=c1; y=c2; z=c3;}
....
};
1. Introduire une fonction membre nommee coincide permettant de savoir si deux
vecteurs ont les memes composantes:
(a) en utilisant une transmission par valeur;
(b) en utilisant une transmission par adresse;
(c) en utilisant une transmission par reference.
Si v1 et v2 designent 2 vecteurs de type vecteur3d, comment secrit le test de coincidence de ces 2 vecteurs, dans chacun des 3 cas consideres?
2. Introduire une fonction membre nomme normax permettant dobtenir parmi deux
vecteurs, celui qui a la plus grande norme On prevoira trois situations:
(a) le resultat est renvoye par valeur;
(b) le resultat est renvoye par reference, largument etant egalement transmis par
reference;
(c) le resultat est renvoye par adresse, largument etant egalemnt transmis par
adresse.
3. Definir le constructeur de recopie correspondant.
4. Surcharger loperateur + afin que les instructions suivantes seront acceptees par le
compilateur:
vecteur3d v1(2,3,4), v2(0,1,-1), v3;
v3 = v1+v2;// v3 sera(2,4,3)
5. On souhaite modifier les composantes dun vecteur `a partir de la fonction
cin (cin>>v1). Donner la fonction surchargee correspondante.
6. Surcharger la fonction cout (cout<<v2).
7. Adapter la classe vecteur3d pour quelle dispose dune fonction membre nombre fournissant le nombre de points existant `a un instant donne.
8. Donner un programme (main) permettant dappeler les differentes fonctions membre
de la classe vecteur3d.

Exercice 3 :
Realiser une classe pile1 nommee Pile permettant de manipuler des ensembles de nombres
entiers. Les elements seront conserves dans un tableau qui sera alloue dynamiquement par
le constructeur de la classe, et qui sera detruit par le destructeur. Les donnees membres
permettront de connatre :
ladresse du tableau (int *adr),
1

La pile est representee par un tableau dynamique au lieu dune liste chanee

le nombre maximum delements du tableau (int dim),


et le nombre courant delements dans le tableau (int nelem).
La classe comportera les fonctions membres suivantes:
Pile(int n): constructeur allouant dynamiquement un emplacement de n entiers. Si
la valeur de n nest pas fournie, le constructeur allouera par defaut un emplacement
de vingt entiers,

Pile(Pile & e):constructeur de recopie,

~Pile(): destructeur;
void empile(int p): ajoute lentier p sur la pile;
int depile(): fournit la valeur de lentier situe en haut de la pile, en le supprimant
de la pile,
int pleine(): fournit la valeur 1 si la pile est pleine, 0 sinon,
int vide(): fournit 1 si la pile est vide, 0 sinon,
int appartient(int p): fournit 1 si lentier p appartient `a la pile, 0 sinon.
Surcharge des op
erateurs: Surcharger les operateurs < et > pour quils jouent les
memes roles ques les fonctions empile et depile respectivement.

Vous aimerez peut-être aussi