#include "RationalNumber.h" #include using namespace std; //--------------------------------------constructors------------------------------------------------------: RationalNumber::RationalNumber() //Default constructor { top=1; lower=1; } RationalNumber::RationalNumber( int to, int lo ) //Constructor receiving numerator and denominator { top = to; if (lo <= 0) lower = 1; else lower = lo; } RationalNumber::RationalNumber( const RationalNumber& C )//Copy constructor { top = C.top; lower = C.lower; } //--------------------------------------------GetSet functions---------------------------------------------: void RationalNumber::setTop(int to) { top=to; } void RationalNumber::setLower(int lo) { lower=lo; if(lower==0) //בדיקה שהמכנה שהוזן ע"י המשתמש לא שווה לאפס { lower=1; cout << "Error, entering the denominator equal number to 0.\nRe-enter the denominator." < lower ? top : lower; int gcd = 0; // greatest common divisor for ( loop = 2 ; loop <= largest ; loop++ ) if ( top % loop == 0 && lower % loop == 0 ) gcd = loop; if (gcd != 0) { top /= gcd; lower /= gcd; } } //--------------------------------------------Arithmetic Operators-----------------------------------------: RationalNumber RationalNumber::operator+( const RationalNumber A) { RationalNumber temp; temp.top = ( A.top * lower ) + ( A.lower * top ); temp.lower = A.lower * lower; temp.Simplify(); return temp; } RationalNumber RationalNumber::operator*( const RationalNumber A) { RationalNumber temp; temp.top = A.top * top; temp.lower = A.lower * lower; temp.Simplify(); return temp; } RationalNumber RationalNumber::operator-( const RationalNumber A) { RationalNumber temp; temp.top = (top * A.lower) - (A.top * lower); temp.lower = lower * A.lower; temp.Simplify(); return temp; } RationalNumber RationalNumber::operator/( const RationalNumber A) { RationalNumber temp; temp.top = top * A.lower; temp.lower = A.top * lower; temp.Simplify(); return temp; } //--------------------------------------------InputOutput Operations-----------------------------------------: bool RationalNumber::operator>(const RationalNumber A) { return ((top / lower) > (A.top / A.lower)); } bool RationalNumber::operator<(const RationalNumber A) { return((top / lower) < (A.top / A.lower)); } RationalNumber RationalNumber::operator<<(const RationalNumber A) { cout << A.top << "/" << A.lower; }