#include #include #include using namespace std; class Complex{ public: Complex(double real, double imm=0); Complex(); Complex coniugate(); double real(){return realPart;} double imm(){return immPart;} double mod(); double mod2(); Complex operator+(Complex in){ return Complex (realPart+in.real(), immPart+in.imm()); } Complex operator-(Complex in){ return Complex (realPart-in.real(), immPart-in.imm()); } Complex operator*(Complex in){ return Complex( realPart*in.real()-immPart*in.imm(), realPart*in.imm()+immPart*in.real()); } Complex operator/(Complex in){ return this->operator*(in.inverso()); } ostream& operator<<(ostream&, const Complex&); //inserter istream& operator>>(istream&, Complex&); //extractor Complex inverso(); private: double realPart; double immPart; }; Complex::Complex(double real, double imm){ realPart=real; immPart=imm; } Complex::Complex(){ realPart=0; immPart=0; } Complex Complex::coniugate(){ return Complex (realPart, -immPart); } double Complex::mod2(){ return (realPart*realPart+immPart*immPart); } double Complex::mod(){ return sqrt(mod2()); } Complex Complex::inverso(){ double m = mod2(); return Complex (realPart/m, -immPart/m); } ostream& Complex::operator<<(ostream& str, const Complex& c){ str<<"("<>(istream& str, Complex& c){ double r,i; str>>r>>i; c = Complex(r,i); }