Exercice 70
Énoncé
Soit une classe vecteur3d définie 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 ;
}
.....
} ;
Introduire une fonction membre nommée coincide permettant de savoir si deux
vecteurs ont les mêmes composantes :
a. en utilisant une transmission par valeur ;
b. en utilisant une transmission par adresse ;
c. en utilisant une transmission par référence.
Si v1 et v2 désignent 2 vecteurs de type vecteur3d, comment s’écrit le test de
coïncidence de ces 2 vecteurs, dans chacun des 3 cas considérés ?
La fonction coincide est membre de la classe vecteur3d ; elle recevra donc implicitement
l’adresse du vecteur l’ayant appelé. Elle ne possédera donc qu’un seul argument, luimême de type vecteur3d. Nous supposerons qu’elle fournit une valeur de retour de type
int (1 pour la coïncidence, 0 dans le cas contraire).
a. La déclaration de coincide pourra se présenter ainsi :
int coincide (vecteur3d) ;
Voici ce que pourrait être sa définition :
int vecteur3d::coincide (vecteur3d v)
{ if ( (v.x == x) && (v.y == y) && (v.z == z) ) return 1 ;
else return 0 ;
}
b. La déclaration de coincide devient :
int coincide (vecteur3d *) ;
Et sa nouvelle définition pourrait être :
156
Précédent

- 157/398

Suivant