#include #include "math.h" #define M_PI 3.14159265358979323846 using namespace std; template class zesp { public: zesp () { }; T getX()const{ return real; } T getY()const{return imag;} void getX(T wartosc){ real=wartosc;} void getY(T wartosc){ imag=wartosc;} zesp(T r, T i) { real = r; imag = i; }; zesp operator=(const zesp& a); zesp(const zesp& wartosc); zesp operator+ (zesp); //dodawanie T abs() //modul { return(sqrt((real*real)+(imag*imag))); } zesp conj()//liczba sprzezona { if(imag!=0) return(zesp(real, -imag)); else return(zesp(real,imag)); } T faza() { if (real >= 0) return (atan2(imag, real)); return (M_PI + atan2(imag, real)); } friend zesp operator* (const zesp o1, const zesp o2) { zesp o; o.real = (o1.real * o2.real) - (o1.imag * o2.imag); o.imag = (o1.real * o2.imag) + (o1.imag * o2.real); return o; } friend zesp operator/ (const zesp o1, const zesp o2) { zesp o; o.real = ((o1.real * o2.real) + (o1.imag * o2.imag))/((o2.real * o2.real) + (o2.imag * o2.imag)); o.imag = (((o1.real * o2.imag) - (o1.imag * o2.real))*(-1))/((o2.real * o2.real) + (o2.imag * o2.imag)); return o; } friend ostream & operator << (ostream & s, const zesp & c) { s << "(" << c.real << "," << c.imag << ")"; return s; } private: T real; T imag; }; template zesp zesp::operator+( zesp c) { zesp n; n.real = this->real + c.real; n.imag = this->imag + c.imag; return n; } template zesp zesp::operator=(const zesp& a) { return zesp(a); } template zesp::zesp(const zesp& wartosc)//kostruktor(inicjalizator) kopiujący(z funkcja typu const zz przezwiskiem klsy Complex na wartosc, po to by nie działac na oryginalnym obiekcie) { imag=wartosc.imag; real=wartosc.real; } int main() { int rea=0; int ima=0; int reb=0; int imb=0; cout<<"podaj czesc re liczby a: \n"; cin>>rea; cout<<"podaj czesc im liczby a: \n"; cin>>ima; zespa(rea,ima); cout<<"liczba a: "<>reb; cout<<"podaj czesc im liczby b: \n"; cin>>imb; zesp b(reb,imb); cout<<"liczba b: "<