// Frac.cpp - implementation file for Frac (fraction) type #include "Frac.h" // Definitions of instance methods ------------------------------ Frac::Frac( void ) : nu(1), de(0) { } Frac::Frac( int n, int d ) { nu = n; de = d; } void Frac::invert( void ) { int t = nu; nu = de; de = t; } int Frac::getNumerator( void ) const { return nu; } int Frac::getDenominator( void ) const { return de; } void Frac::setNumerator( int n ) { nu = n; } void Frac::setDenominator( int d ) { de = d; } void Frac::write( ostream& out ) // write fraction to ostream { out << nu << '/' << de; } // Definitions of other Frac-related functions ------------------ ostream& operator<<( ostream& out, Frac& q ) { q.write( out ); return out; } Frac& operator+( Frac& p, Frac& q ) { Frac *r = new Frac; r->setNumerator( p.getNumerator() * q.getDenominator() + p.getDenominator() * q.getNumerator() ); r->setDenominator( p.getDenominator() * q.getDenominator() ); return *r; }