Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Construct a class named Fractions containing two integer data members named num

ID: 3771622 • Letter: C

Question

Construct a class named Fractions containing two integer data members named num and denom, used to store the numerator and denominator of a fraction having the form num/denom. Your class should include a default constructor that initializes num and denom to 1 if there's no user initialization, and it must prohibit a 0 denominator value. In addition, create member functions for displaying an object's data values and overloaded operator functions for adding, subtracting, multiplying, and dividing two Fraction objects, as follows: Addition: a/b + c/d = (a * d + b * c) / (b * d) Subtraction: a/b - c/d = (a * d - b * c) / (b * d) Multiplication: a/b * c/d = (a * c) / (b * d) Division: (a/b) / (c/d) = (a*d) / (b*c) Include the class written for Exercise 4a in a working C++ program that tests each member function.

Explanation / Answer

#include <iostream>
#include<string>
using namespace std;


class Fraction {
public:
   int num;
   int denom;

   Fraction() {
       num = 1;
       denom = 1;
   }

   Fraction(int fnum, int fdenom) {
           num = fnum;
           if(fdenom != 0)
               denom = fdenom;
           else
               cout << " Denominator can not be 0" <<endl;
       }

   Fraction operator+(Fraction f2) {

       int rnum = num * f2.denom + denom * f2.num;
       int rden = denom * f2.denom;

       Fraction frac = Fraction(rnum,rden);
       return frac;
   }

   Fraction operator-(Fraction f2) {

           int rnum = num * f2.denom - denom * f2.num;
           int rden = denom * f2.denom;

           Fraction frac = Fraction(rnum,rden);
           return frac;
       }

   Fraction operator*(Fraction f2) {

               int rnum = num * f2.num;
               int rden = denom * f2.denom;

               Fraction frac = Fraction(rnum,rden);
               return frac;
           }

   Fraction operator/(Fraction f2) {

               int rnum = num * f2.denom;
               int rden = denom * f2.num;

               Fraction frac = Fraction(rnum,rden);
               return frac;
           }

   string asString() {
       cout << num << "/" <<denom <<endl;
       string str = num+"/"+denom;
       return str;
   }
};

int main() {
   Fraction f1 = Fraction(10,20);
   Fraction f2 = Fraction(20,40);

   Fraction add = Fraction();
   Fraction sub = Fraction();
   Fraction mul = Fraction();
   Fraction div = Fraction();

   add = f1+f2;
   sub = f1-f2;
    mul = f1*f2;
   div = f1/f2;

   cout << "Fraction 1: ";
   f1.asString();
   cout << " Fraction2 : " ;
    f2.asString();
   cout << "Add: ";
   add.asString();
   cout << " Subtraction: ";
   sub.asString();
   cout << "Mul: ";
   mul.asString();
   cout << " Div: ";
   div.asString();
   return 0;
}

----output-----

Fraction 1: 10/20
Fraction2 : 20/40
Add: 800/800
Subtraction: 0/800
Mul: 200/800
Div: 400/400