Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- This is the nicer version of the
- fraction program
- like the last one I'm not going to simplify the fractions.
- */
- #include <iostream>
- using namespace std;
- // Fraction Class
- struct Fraction {
- int num, dem;
- Fraction() : num(0), dem(0) {}
- Fraction(int _num, int _dem) : num(_num), dem(_dem) {}
- Fraction& operator = (const Fraction& f) {
- num = f.num;
- dem = f.dem;
- return *this;
- }
- Fraction operator + (Fraction& f) {
- Fraction temp = *this, temp2 = f, ret;
- equalize(temp, temp2);
- ret.num = temp.num + temp2.num;
- ret.dem = temp.dem;
- return ret;
- }
- Fraction operator - (Fraction& f) {
- Fraction temp = *this, temp2 = f, ret;
- equalize(temp, temp2);
- ret.num = temp.num - temp2.num;
- ret.dem = temp.dem;
- return ret;
- }
- Fraction operator * (Fraction& f) {
- Fraction temp;
- temp.num = num*f.num;
- temp.dem = dem*f.dem;
- return temp;
- }
- Fraction operator / (Fraction& f) {
- Fraction temp;
- temp.num = num*f.dem;
- temp.dem = dem*f.num;
- return temp;
- }
- private:
- void equalize(Fraction& f1, Fraction& f2) {
- if(f1.dem != f2.dem) {
- Fraction temp = f1, temp2 = f2;
- f1.num *= temp2.dem;
- f1.dem *= temp2.dem;
- f2.num *= temp.dem;
- f2.dem *= temp.dem;
- }
- }
- };
- // Making the Fraction class output streamable :D
- ostream& operator << (ostream& out, Fraction& frac) {
- out << frac.num << "/" << frac.dem;
- return out;
- }
- // Making the Fraction class input streamable :D
- istream& operator >> (istream& in, Fraction& frac) {
- in >> frac.num;
- cout << "__" << endl;
- in >> frac.dem;
- return in;
- }
- // Prints the answer
- void print_answer(char op, Fraction& a, Fraction& f1, Fraction& f2) {
- cout << a << " = " << f1 << " " << op << " " << f2 << endl;
- }
- int main() {
- unsigned char op;
- Fraction fraction1, fraction2, answer;
- cout << "Please type in the first fraction" << endl;
- cin >> fraction1;
- cout << "Please type in the second fraction" << endl;
- cin >> fraction2;
- cout << "Please type int the operator, (+, -, *, /) " << endl;
- cin >> op;
- if(op == '+') {
- answer = fraction1 + fraction2;
- print_answer(op, answer, fraction1, fraction2);
- } else if(op == '-') {
- answer = fraction1 - fraction2;
- print_answer(op, answer, fraction1, fraction2);
- } else if(op == '*') {
- answer = fraction1 * fraction2;
- print_answer(op, answer, fraction1, fraction2);
- } else if(op == '/') {
- answer = fraction1 / fraction2;
- print_answer(op, answer, fraction1, fraction2);
- } else {
- cout << "Invalid operator " << op << " please use (+, -, *, /)" << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement