Question
Hello, I need to add just this part to my code as showed in the expected output. Thanks. - Test overload friend iostream insertion ,
Hello, I need to add just this part to my code as showed in the expected output. Thanks.
- Test overload friend iostream insertion , and extraction >> operator
Expected Output:
Code:
Frac.h
#ifndef FRAC_H #define FRAC_H #include
using namespace std;
class Frac;
ostream& operator > (istream& strm, Frac&);
class Frac { private: int num; int den; int gcd(int a, int b) { int max, min; a = abs(a); b = abs(b);
if (a
while (max % min != 0) { int tmp = max % min; max = min; min = tmp; }
return(min); } void lowTerms(int& num, int& den);
public: Frac() { num = 0; den = 1; }
Frac(int n) { num = n; den = 1; }
Frac(int n, int d) { num = n / gcd(n, d); den = d / gcd(n, d); }
Frac(string s);
Frac(const Frac& rhs) { num = rhs.num; den = rhs.den; }
Frac operator=(const Frac& rhs) { num = rhs.num; den = rhs.den; }
void setNum(int); void setDen(int);
int getNum() const; int getDen() const;
Frac operator + (const Frac& rhs); Frac operator - (const Frac& rhs); Frac operator * (const Frac& rhs); Frac operator / (const Frac& rhs);
Frac operator++(); Frac operator++(int); Frac operator--(); Frac operator--(int);
bool operator == (const Frac& f2); bool operator != (const Frac& f2); bool operator (const Frac& f2); bool operator = (const Frac& f2);
operator int() { return (num) / den; } operator float() { float temp; temp = static_cast
};
void Frac::setNum(int n) { num = n; }
void Frac::setDen(int d) { den = d; }
int Frac::getDen()const { return den; } int Frac::getNum()const { return num; }
void Frac::lowTerms(int& num, int& den) { int div = gcd(num, den); num = num / div; den = den / div; }
Frac::Frac(string s) { stringstream ss; ss > num; char ch; ss >> ch; ss >> den; }
Frac Frac::operator + (const Frac& rhs) { Frac temp; temp.num = (num * rhs.den) + (rhs.num * den); temp.den = den * rhs.den; temp.lowTerms(temp.num, temp.den); return temp; }
Frac Frac::operator - (const Frac& rhs) { Frac temp; temp.num = (num * rhs.den) - (rhs.num * den); temp.den = den * rhs.den; temp.lowTerms(temp.num, temp.den); return temp; }
Frac Frac::operator * (const Frac& rhs) { Frac temp; temp.num = num * rhs.num; temp.den = den * rhs.den; temp.lowTerms(temp.num, temp.den); return temp; }
Frac Frac::operator / (const Frac& rhs) { Frac temp; temp.num = num * rhs.den; temp.den = den * rhs.num; temp.lowTerms(temp.num, temp.den); return temp; }
Frac Frac::operator++() { num += den; lowTerms(num, den); return *this; } //postfix operator ++ Frac Frac::operator++(int) { Frac* temp = new Frac(this->num, this->den); this->num += this->den; lowTerms(num, den); return *temp; } //postfix operator -- Frac Frac::operator--(int) { Frac* temp = new Frac(this->num, this->den); this->num -= this->den; lowTerms(num, den); return *temp; }
Frac Frac::operator--() { num -= den; lowTerms(num, den); return *this; }
bool Frac::operator == (const Frac& f2) { return (num * f2.den == den * f2.num); }
bool Frac::operator != (const Frac& f2) { return (num * f2.den != den * f2.num); }
bool Frac::operator
bool Frac::operator > (const Frac& f2) { return (num * f2.den > den* f2.num); }
bool Frac::operator
bool Frac::operator >= (const Frac& f2) { return (num * f2.den >= den * f2.num); }
ostream& operator
istream& operator >> (istream& strm, Frac& rhs) { char c; strm >> rhs.num; strm >> c; strm >> rhs.den; rhs.lowTerms(rhs.num, rhs.den); return strm; } #endif
testFrac.cpp
#include "Frac.h" #include
using namespace std;
int main() { Frac x(3, 4); Frac y(1, 2); Frac getSetTest; Frac f2(3, 5), f3(9, 2); //for testing type conversions int num; int den;
cout
cout
cout
cout
Frac z(x); cout
Frac v = x + y; cout
Frac a = x - y; cout
Frac b = x * y; cout
Frac c = x / y; cout
cout
cout , = y."
if (x != y) { cout
if (x > y) { cout y is: true" y is: false"
if (x
if (x >= y) { cout = y is: true" = y is: false"
if (x
cout
cout
//string constructor test Frac s("6/7"); cout
cout
cout
cout Part-1.5 overload friend iostream insertion > Enter a fraction to test iostream operators: 5/6 You have entered: 5/6
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started