#include #include "FractionT.h" using namespace std; FractionT::FractionT(){ cout << "In no arg constructor " << endl; numerator = 0; denominator = 1; positive = true; } FractionT::FractionT(int n){ cout << "In one arg constructor " << endl; numerator = n; denominator = 1; positive = true; Reduce(); } FractionT::FractionT(int n, int d){ cout << "In two arg constructor " << endl; numerator = n; denominator = d; positive = true; Reduce(); } /* FractionT::~FractionT(){ cout << "In the destructor" << endl; } */ int GCD(int a, int b) { int tmp; while (b != 0) { tmp = b; b = a % b; a = tmp; } return a; } void FractionT::Reduce() { int gcd; if (denominator == 0) { numerator = 0; denominator = 1; positive = true; } else { if (denominator < 0) { denominator *= -1; numerator *= -1; } if (numerator < 0) { numerator *= -1; positive = false; } gcd = GCD( numerator, denominator); numerator /= gcd; denominator /= gcd; } } void FractionT::Set(int n, int d){ numerator = n; denominator = d; Reduce(); } int FractionT::Numerator() const{ return numerator; } int FractionT::Denominator() const{ return denominator; } FractionT FractionT::operator * (const FractionT & f) const { FractionT returnValue; returnValue.numerator = numerator * f.numerator; returnValue.denominator = denominator * f.denominator; returnValue.Reduce(); return returnValue; } FractionT FractionT::Multiply(const FractionT & f) { FractionT returnValue; returnValue.numerator = numerator * f.numerator; returnValue.denominator = denominator * f.denominator; returnValue.Reduce(); return returnValue; } //void FractionT::AddTo(const FractionT & f){ //} // //void FractionT::SubtractFrom(const FractionT & f){ //} // //void FractionT::MultiplyBy(const FractionT & f){ //} // //void FractionT::DivideBy(const FractionT & f){ //} // /* private: int numerator; int denominator; bool positive; }; */