More operator overload.

More operator overload.

operator

See version :

Pas de dépendances

Download :

#include <iostream>
#include <math.h>

class Vecteur
{
protected:
  double x,y,z;
public:
  Vecteur();
  Vecteur(const double& a,const double& b,const double& c);
  double& operator[] (int i);
  const double& operator[] (int i) const;
  Vecteur operator+();
  Vecteur operator-();
  Vecteur& operator+=(const Vecteur&);
  Vecteur& operator-=(const Vecteur&);
  Vecteur& operator*=(const Vecteur&);
  Vecteur& operator/=(const Vecteur&);
  Vecteur& operator*=(double);
  Vecteur& operator/=(double);
  friend Vecteur operator+(const Vecteur&, const Vecteur&);
  friend Vecteur operator-(const Vecteur&, const Vecteur&);
  friend double operator* (const Vecteur&, const Vecteur&);
  friend Vecteur operator* (const Vecteur&, double);
  friend Vecteur operator* (double, const Vecteur&);
  friend Vecteur operator/ (const Vecteur&, double);
  friend Vecteur operator/ (const Vecteur&, const Vecteur&);
  friend int operator==(const Vecteur&,const Vecteur&);
  friend int operator!=(const Vecteur&,const Vecteur&);
  friend int operator<(const Vecteur&,const Vecteur&);
  friend int operator>(const Vecteur&,const Vecteur&);
  friend Vecteur Orthogonal(const Vecteur&);
  friend double Norm(const Vecteur&);
  friend std::ostream& operator<<(std::ostream&,const Vecteur&);
};

using namespace std;

// IMPLEMENTATION


Vecteur::Vecteur()
{
    x=y=z=0.0;
}

Vecteur::Vecteur(const double& a,const double& b,const double& c)
{ 
    x=a; 
    y=b; 
    z=c;
}
  
double& Vecteur::operator[] (int i) 
{
    if (i == 0)
        return x;
    else if (i == 1) 
        return y;
    else
        return z;
}

const double& Vecteur::operator[] (int i) const
{
    if (i == 0)
        return x;
    else if (i == 1) 
        return y;
    else
        return z;
}

Vecteur Vecteur::operator+ ()
{
  return *this;
}

Vecteur Vecteur::operator- ()
{
  return Vecteur(-x,-y,-z);
}

Vecteur& Vecteur::operator+= (const Vecteur& u)
{
  x+=u.x; 
  y+=u.y; 
  z+=u.z;
  return *this;
}

Vecteur& Vecteur::operator-= (const Vecteur& u)
{
  x-=u.x; 
  y-=u.y; 
  z-=u.z;
  return *this;
}

Vecteur& Vecteur::operator*= (double a)
{
  x*=a; 
  y*=a; 
  z*=a;
  return *this;
}

Vecteur& Vecteur::operator/= (double a)
{
  x/=a; 
  y/=a; 
  z/=a;
  return *this;
}

Vecteur& Vecteur::operator*= (const Vecteur& u)
{
  x*=u.x; 
  y*=u.y; 
  z*=u.z;
  return *this;
}

Vecteur& Vecteur::operator/= (const Vecteur& u)
{
  x/=u.x; 
  y/=u.y; 
  z/=u.z;
  return *this;
}

Vecteur operator+ (const Vecteur& u, const Vecteur& v)
{
  return Vecteur(u.x+v.x,u.y+v.y,u.z+v.z);
}

Vecteur operator- (const Vecteur& u, const Vecteur& v)
{
  return Vecteur(u.x-v.x,u.y-v.y,u.z-v.z);
}

// Produit scalaire
double operator* (const Vecteur& u, const Vecteur& v)
{
  return (u.x*v.x+u.y*v.y+u.z*v.z);
}

Vecteur operator* (const Vecteur& u,double a)
{
  return Vecteur(u.x*a,u.y*a,u.z*a);
}

Vecteur operator* (double a, const Vecteur& v)
{
  return v*a;
}

// produit Vectoriel
Vecteur operator/ (const Vecteur& u, const Vecteur& v)
{
  return Vecteur(u.y*v.z-u.z*v.y,u.z*v.x-u.x*v.z,u.x*v.y-u.y*v.x);
}

Vecteur operator/ (const Vecteur& u, double a)
{
  return Vecteur(u.x/a,u.y/a,u.z/a);
}

int operator== (const Vecteur& u,const Vecteur& v)
{
  return ((u.x==v.x)&&(u.y==v.y)&&(u.z==v.z));
}

int operator!= (const Vecteur& u,const Vecteur& v)
{
  return (!(u==v));
}

double Norm(const Vecteur& u)
{
  return sqrt(u.x*u.x+u.y*u.y+u.z*u.z);
}

int operator<(const Vecteur& a,const Vecteur& b)
{
  return ((a.x<b.x)&&(a.y<b.y)&&(a.z<b.z));
}

int operator>(const Vecteur& a,const Vecteur& b)
{
  return ((a.x>b.x)&&(a.y>b.y)&&(a.z>b.z));
}

Vecteur Orthogonal(const Vecteur& u)
{  
  Vecteur a=Vecteur(fabs(u[0]),fabs(u[1]),fabs(u[2]));
  int i=0;
  int j=1;
  if (a[0]>a[1])
  {
    if (a[2]>a[1])
    {
      j=2;
    }
  }
  else
  {
    i=1;
    j=2;
    if (a[0]>a[2])
    {
      j=0;
    }
  }
  a=Vecteur(0.0,0.0,0.0);
  a[i]=u[j];
  a[j]=-u[i];
  return a;
}

std::ostream& operator<<(std::ostream& os,const Vecteur& v)
{
    return os << "(" << v.x << "," << v.y << "," << v.z << ")";
}

// PROGRAMME PRINCIPALE 

int main()
{
    Vecteur a(1,0,0);
    Vecteur b(0,1,0);
    Vecteur c=a/b;
    cout << "3e vecteur de base : " << c << endl;
    a+=b;
    a/=2.0;
    cout << "produit scalaire entre a " << a << " et b " << b << " = " << a*b << endl;
    cout << "norme de a = " << Norm(a) << endl;
    cout << "je rappelle la valeur du vecteur a : " << a << endl;
    cout << "un vecteur orthogonal au vecteur a : " << Orthogonal(a) << endl;
    system("Pause");
    return 0;
}






Explanations

	No explanations yet.