Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- // sa se - unar care schimba semn partii imaginare complex si inmaginar
- //complex.h
- class complex{
- double re, im;
- public:
- complex (double n1=0, double n2=0);
- void af() const; //met constanta
- friend void af(complex);
- //+ aduna 2 complecsi
- // complex operator+(complex);
- friend complex operator+(complex, complex);
- //* inmult a 2 complecsi
- //complex operator * (complex);
- friend complex operator*(complex, complex);
- // a*c (a real, c complex, rez complex)
- friend complex operator*(double, complex);
- //== (compara 2 complecsi)
- int operator==(complex);
- //-- decrem (p reala si p imag)
- //f prefix
- complex & operator--();//f prefix
- complex operator--(int);//f postf
- friend ostream& operator<<(ostream&, const complex&);
- friend istream& operator>>(istream&, complex&);
- friend complex operator/(double, complex);
- friend complex operator/(complex, complex);
- };
- //complex.cpp
- complex::complex(double n1, double n2)
- {
- re = n1; im = n2;
- }
- void complex::af( ) const
- {
- cout<<this->re<<" +i*"<<im<<endl;
- }
- void af( complex c)
- {
- cout<<c.re<<" +i*"<<c.im<<endl;
- }
- /***
- complex complex::operator+( complex z2)
- {
- // s = ob.ct + z2friend complex operator*(double, complex);
- complex s;
- s.re = re + z2.re;
- s.im = im + z2.im;
- //s.im = this->im + z2.im;
- return s;
- }
- ****/
- complex operator+(complex z1, complex z2)
- {
- // s = z1+z2
- complex s;
- s.re = z1.re + z2.re;
- s.im = z1.im + z2.im;
- return s;
- }
- /***
- complex complex::operator*(complex z)
- {
- // p = ob.ct * z
- complex p;
- p.re = re*z.re - im*z.im;
- p.im = re*z.im + im*z.re;
- return p;
- }
- ****/
- complex operator*(complex x, complex y)
- {
- // p = x * y
- complex p;
- p.re = x.re*y.re - x.im*y.im;
- p.im = x.re*y.im + x.im*y.re;
- return p;
- }
- complex operator/(complex x, complex y)
- {
- // p = x * y
- complex p;
- p.re = (((x.re)*(y.re))+((x.im)*(y.im)))/(pow(y.re,2)+pow(y.im,2));
- p.im = (((y.re)*(x.im))-((x.re)*(y.im)))/(pow(y.re,2)+pow(y.im,2));
- return p;
- }
- complex operator*(double a, complex c)
- {
- //p = a * c
- complex p;
- p.re = a*c.re;
- p.im = a*c.im;
- return p;
- }
- complex operator/(double a, complex c)
- {
- //p = a * c
- complex p;
- p.re = a/c.re;
- p.im = a/c.im;
- return p;
- }
- int complex::operator==(complex z)
- {
- //ob.ct == z (???)
- if ((re == z.re) && (im == z.im))
- return 1;
- else
- return 0;
- }
- complex & complex::operator--() //f prefix
- {
- re--; im--;
- return *this;
- }
- complex complex::operator--(int) //f postf
- {
- complex r = *this;
- re--; im--;
- return r;
- }
- ostream& operator<<(ostream & mon, const complex &c)
- {
- mon<<c.re<<" +i*"<<c.im<<"\n";
- return mon;
- }
- istream& operator>>(istream& tast, complex &c)
- {
- tast>>c.re>>c.im;
- return tast;
- }
- //test.cpp
- int main()
- {
- /* complex a;
- complex b(1.1, 2.2);
- complex c=complex();//apel explicit al constructorului
- a.af();
- af(b);
- complex d(100, 200);
- c = b+d;
- //c = b.operator+(d); //apel explicit ptr metoda operator+
- c.af();
- c = b*d;
- c.af();
- a = 5.5 * c;
- a.af();
- d = a; //atribuire (nu e suprainc de catre progr); implcit
- cout<<(d==a)<<endl;
- cout<<(c==a)<<endl;
- cout<<"----------------------------\n\n\n";
- a.af();
- d = a;
- cout<<"a inainte de decr postf";
- a.af();
- a--;//d e copia lui a
- a.af();friend complex operator*(double, complex);
- cout<<"----------\n";
- a=d;friend complex operator*(double, complex);
- cout<<"a inainte de decr pref";
- a.af();
- --a;
- a.af();
- a=d;
- complex aa=--a;
- cout<<"\naa=";aa.af();cout<<"\na="; a.af();
- a=d;
- aa=a--;
- cout<<"\naa=";aa.af();cout<<"\na="; a.af();
- cout<<"\n\n\na="<<a<<endl;
- cout<<"Introdu val ptr a";
- cin>>a;
- cout<<a;
- */
- complex a(100,200);
- cout<<a;
- complex c;
- c=100/a;
- cout<<c;
- complex d(20,50), b(15,30),div;
- div=d/b;
- cout<<div;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement