Exercice corrigé la surcharge des opérateurs en langage C++

#include <iostream.h>
#include <string.h>
class vecteur3d{
/*float taille;
float *adresse;
*/
float x; // en public pour mon operateur d'indexation
float y;
float z;
float adr[3];
public:
vecteur3d(float x1=0, float y1=0, float z1=0);
friend vecteur3d/*valeur de retour */ operator+(vecteur3d vect1, vecteur3d
vect2);
friend vecteur3d/*valeur de retour */ operator-(vecteur3d vect1, vecteur3d
vect2);
friend vecteur3d operator*(vecteur3d vect1, vecteur3d vect2);
friend ostream& operator<<(ostream& tmp , vecteur3d v);
friend istream& operator>>(istream& tmp, vecteur3d& v);
float& operator[] (int i);
vecteur3d& operator +=(vecteur3d& v);
friend bool operator==(vecteur3d v1,vecteur3d v2);
vecteur3d& operator=(vecteur3d v);
void affiche();
~vecteur3d();
};
vecteur3d::vecteur3d(float x1, float y1, float z1){
x=x1;
y=y1;
z=z1;;
adr[0]=x;
adr[1]=y;
adr[2]=z;
}
vecteur3d::~vecteur3d(){
}
float& vecteur3d::operator[] (int i){
return adr[i];
}
vecteur3d operator+(vecteur3d vect1, vecteur3d vect2){
vecteur3d result;
result.x=vect1.x+vect2.x;
result.y=vect1.y+vect2.y;
result.z=vect1.z+vect2.z;
return result;}
vecteur3d operator-(vecteur3d vect1, vecteur3d vect2){
vecteur3d result;
result.x=vect1.x-vect2.x;
result.y=vect1.y-vect2.y;
result.z=vect1.z-vect2.z;
return result;}
vecteur3d operator*(vecteur3d vect1, vecteur3d vect2){
vecteur3d result;
result.x=vect1.x*vect2.x;
result.y=vect1.y*vect2.y;
result.z=vect1.z*vect2.z;
return result;}
vecteur3d& vecteur3d::operator +=(vecteur3d& v){
x+=v.x;
y+=v.y;
z+=v.z;
return *this;
}
bool operator==(vecteur3d v1,vecteur3d v2){
if((v1.x==v2.x) && (v1.y==v2.y) && (v1.z==v2.z)) return true;
else return false;
}
vecteur3d& vecteur3d::operator=(vecteur3d v){
x=v.x;
y=v.y;
z=v.z;
return *this;
}
ostream& operator<<(ostream& tmp, vecteur3d v){
tmp<<"X = "<<v.x<<", Y= "<<v.y<<", Z= "<<v.z<<endl;
return tmp;
}
istream& operator>>(istream& tmp, vecteur3d& v){
//pas de vecteur3d::
cout<< " Entrer les valeurs de x,y,z"<<endl;
tmp>>v.x;
tmp>>v.y;
tmp>>v.z;
return tmp;
}
void vecteur3d::affiche(){
cout<<"("<<x<<","<<y<<","<<z<<")";
}
void main(){
//vecteur3d a(2,3,4);
vecteur3d a;
vecteur3d b;
vecteur3d d(1,1,1);
vecteur3d c;
/* a.x=a[0];
a.y=a[1];
a.z=a[2];
for (i=0;i<3;i++){
cin>>a[i];
}
for (i=0;i<3;i++){
cout<<a[i]<<endl;
}
*/
cin>>a;
cout<<a;
cin>>b;
if(a==b){
cout<<"Valeurs identiques"<<endl;
}
else{
cout<<"Valeurs différentes"<<endl;
}
c=b-d;
//c.affiche();
cout<<c;
c=a+b;
c.affiche();
c=a*b;
c.affiche();
a+=b;
a.affiche();
a=b;
a.affiche();
vecteur3d k(1,1,2);
for (float i=0;i<3;i++){
cout<<k[i]<<endl;
}
}

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *