//--------------- FRAC.CPP --------------- // The class definition for fractions. // // Bob Myers #include #include "frac.h" using namespace std; Fraction Fraction::operator+(const Fraction& f) const // operator overload for + written as member function { Fraction r; // result r.numerator = (numerator * f.denominator) + (f.numerator * denominator); r.denominator = (denominator * f.denominator); return r; } Fraction::Fraction() // Default constructor. Initializes fraction to 0/1 { numerator = 0; denominator = 1; } Fraction::Fraction(int n, int d) // initializes fraction to n/d (defaults to 0/1 if invalid data) { if (SetValue(n, d) == false) SetValue(0, 1); } void Fraction::Input() // Get a fraction from standard input, in the form "numerator/denominator." // what kind of error checking should be added? { char divSign; // used to consume the '/' character during input do { cin >> numerator >> divSign >> denominator; if (denominator <= 0) cout << "*** Denominator must be positive. Try again: "; } while (denominator <= 0); } void Fraction::Show() const // Display a fraction, in the form "numerator/denominator." { cout << numerator << '/' << denominator; } int Fraction::GetNumerator() const { return numerator; } int Fraction::GetDenominator() const { return denominator; } bool Fraction::SetValue(int n, int d) // sets fraction to n/d and returns true for success (good data) // returns false and leaves fraction alone if bad data { if (d <= 0) return false; numerator = n; denominator = d; return true; } double Fraction::Evaluate() const // Calculates and returns the decimal value of a fraction { return static_cast(numerator) / denominator; }