#include "Complessi.h" #include using std::ostream; using std::istream; // Constructor Complessi::Complessi( double r, double i ) { reale = r; immaginaria = i; } // end constructor // Overloaded addition operator Complessi Complessi::operator+( const Complessi &operand2 ) const { Complessi sum; sum.reale = reale + operand2.reale; sum.immaginaria = immaginaria + operand2.immaginaria; return sum; } // end function operator+ // Overloaded subtraction operator Complessi Complessi::operator-( const Complessi &operand2 ) const { Complessi diff; diff.reale = reale - operand2.reale; diff.immaginaria = immaginaria - operand2.immaginaria; return diff; } // end function operator- // Overloaded multiplication operator Complessi Complessi::operator*( const Complessi &operand2 ) const { Complessi times; times.reale = reale * operand2.reale + immaginaria * operand2.immaginaria; times.immaginaria = reale * operand2.immaginaria + immaginaria * operand2.reale; return times; } // end function operator* // Overloaded = operator Complessi& Complessi::operator=( const Complessi &right ) { reale = right.reale; immaginaria = right.immaginaria; return *this; // enables concatenation } // end function operator= // Overloaded == operator bool Complessi::operator==( const Complessi &right ) const { return right.reale == reale && right.immaginaria == immaginaria ? true : false; } // end function operator== // Overloaded != operator bool Complessi::operator!=( const Complessi &right ) const { return !( *this == right ); } // end function operator!= // Overloaded << operator ostream& operator<<( ostream &output, const Complessi &complessi ) { output << complessi.reale << " + " << complessi.immaginaria << 'i'; return output; } // end function operator<< // Overloaded >> operator istream& operator>>( istream &input, Complessi &complessi ) { input >> complessi.reale; input.ignore( 3 ); // skip spaces and + input >> complessi.immaginaria; input.ignore( 2 ); return input; } // end function operator>>