Klasa kompleksnih brojeva fajl complex h ifndef complex
Класа комплексних бројева // Klasa kompleksnih brojeva // fajl complex. h #ifndef _complex #define _complex #include <iostream> class complex { public: complex (double=0, double=0); friend complex operator+ (complex, complex); friend complex operator- (complex, complex); 2
Класа комплексних бројева friend complex operator* (complex, complex); friend complex operator/ (complex, complex); complex& operator+= operator-= operator*= operator/= (complex); friend complex operator+ operator- (complex); friend int operator== operator!= (complex, complex); 3
Класа комплексних бројева friend double re friend double im friend complex conj friend ostream& operator<< friend istream& operator>> private: double real, imag; }; (complex); (ostream& ad, complex c); (istream&, complex&); 4
Класа комплексних бројева // Inline funkcije inline complex: : complex (double r, double i) : real (r), imag(i) {} inline complex operator+ (complex c 1, complex c 2) { return complex(c 1. real+c 2. real, c 1. imag+c 2. imag); } inline complex operator- (complex c 1, complex c 2) { return complex(c 1. real-c 2. real, c 1. imag-c 2. imag); } inline complex& complex: : operator+= (complex c) { real+=c. real; imag+=c. imag; return *this; } 5
Класа комплексних бројева inline complex& complex: : operator-= (complex c) { real-=c. real; imag-=c. imag; return *this; } inline complex& complex: : operator*= (complex c) { return *this=*this*c; } inline complex& complex: : operator/= (complex c) { return *this=*this/c; } inline complex operator+ (complex c) {return c; } inline complex operator- (complex c) {return complex(-c. real, -c. imag); } 6
Класа комплексних бројева inline int operator== (complex c 1, complex c 2) { return (c 1. real==c 2. real) && (c 1. imag==c 2. imag); } inline int operator!= (complex c 1, complex c 2) { return !(c 1==c 2); } inline double re (complex c) { return c. real; } inline double im (complex c) { return c. imag; } inline complex conj(complex c) { return complex(c. real, -c. imag); } #endif // _complex 7
Класа комплексних бројева // Klasa kompleksnih brojeva // Fajl complex. cpp #include "complex. h" complex operator* (complex c 1, complex c 2) {return complex(c 1. real*c 2. real-c 1. imag*c 2. imag, c 1. real*c 2. imag+c 1. imag*c 2. real); } 8
Класа комплексних бројева complex operator/ (complex c 1, complex c 2) { double r=c 2. real*c 2. real - c 2. imag*c 2. imag; return complex((c 1. real*c 2. real+c 1. imag*c 2. imag)/r, (c 1. real*c 2. imag+c 1. imag*c 2. real)/r); } ostream& operator<< (std: : ostream& os, complex c) { return os<<"("<<c. real<<", "<<c. imag<<")"; } istream& operator>> (std: : istream& is, complex &c) { return is>>c. real>>c. imag; } 9
- Slides: 9