/*
  Name:     Przeciążanie operatorów zadanie domowe
  Author:   Piotr Leżoń 21826
  Date:     20-12-05 17:21
*/

#include <iostream.h>

class wektor
{
      private:
              int x,y,z;
      public:
              wektor();
              wektor(int, int, int);
              wektor pobierz();
              void wypisz();
              wektor operator+(const wektor&);
              wektor operator-(const wektor&);  
              wektor operator*(const wektor&);  
};

wektor::wektor() //konstruktor domniemany; losujemy wartosci poczatkowe z zakresu od 0 do 10
{
 
 x=rand()%10;
 y=rand()%10;
 z=rand()%10;
}

wektor::wektor(int a, int b, int c) : x(a),y(b),z(c)         //konstruktor z parametrami
{
}

wektor wektor::pobierz()
{
     wektor w;
     cout<<"Podaj x: "; cin>>x;
     cout<<"Podaj y: "; cin>>y;
     cout<<"Podaj z: "; cin>>z;
     return w;
}
     
void wektor::wypisz()
{
 cout<<" x: "<<x<<" y: "<<y<<" z: "<<z<<endl;
}

wektor wektor::operator+(const wektor &a)
{
      return wektor(this->x+a.x,this->y+a.y, this->z+a.z);
}

wektor wektor::operator-(const wektor &a)
{
      return wektor(this->x-a.x,this->y-a.y, this->z-a.z);
}

wektor wektor::operator*(const wektor &a) //sposob obliczenia znaleziony na http://warlock.amnesty.scene.pl/direct3d.php
{
       return wektor ((y*a.z)-(a.y*z),(a.x*z)-(x*a.z),(x*a.y)-(a.x*y));
}

void oddziel()
{
     cout<<"********************************************************************************";
}

int main(int argc, char * argv[])
{        
      system("CLS");
      srand(time(NULL));
      
      char klawisz;
      wektor a,b;
      cout<<"Wy(l)osowac wektor a? W przeciwnym razie zostanie wczytany z klawiatury ";
      cin>>klawisz;
      if(klawisz == 'l' || klawisz == 'L') 
                 {
                 cout<<"Wylosowany wektor a: ";
                 a.wypisz();
                 }
                 else
                 {
                 a.pobierz(); 
                 cout<<"Wczytany wektor a: ";
                 a.wypisz();
                 }
      oddziel();
      
      cout<<"Wy(l)osowac wektor b? W przeciwnym razie zostanie wczytany z klawiatury ";
      cin>>klawisz;
      if(klawisz == 'l' || klawisz == 'L') 
                 {
                 cout<<"Wylosowany wektor b: ";
                 b.wypisz();
                 }
                 else
                 {
                 b.pobierz(); 
                 cout<<"Wczytany wektor b: ";
                 b.wypisz();
                 }
      oddziel();
         
      cout<<endl<<endl;
      cout<<"Suma wektorow a i b:\t\t";
      wektor c;
      c=a+b;
      c.wypisz();
      cout<<"Roznica wektorow a i b:\t\t";
      c=a-b;
      c.wypisz();
      cout<<"Iloczyn wektorowy a i b:\t";
      c=a*b;
      c.wypisz();
      system("pause>nul");
      return 0;
}
