Write a C program which create a class for working with mixe

Write a C++ program which create a class for working with mixed fractions. MUST BE MIXED, NOT IMPROPER. GIVEN: The main.

class Fraction {
public:
   Fraction(int = 1, int = 1, int = 1);
   void printData();
   void add(Fraction, Fraction);
   void sub(Fraction, Fraction);
   void mult(Fraction, Fraction);
   void divide(Fraction, Fraction);
   Fraction recip();
   void reduce();

private:
   int whole, num, den;
};

int main()
{
   Fraction f1(8, 12, 14), f2(3, 4, 6), sum, diff, prod, quo;
   cout << \"The fractions are \" << endl;
   f1.printData();
   cout << \" and \";
   f2.printData();
   cout << endl << endl;
   sum.add(f1, f2);
   diff.sub(f1, f2);
   prod.mult(f1, f2);
   quo.divide(f1, f2);
   cout << \"Sum is \";
   sum.printData();
   cout << endl << endl;
   cout << \"Difference is \";
   diff.printData();
   cout << endl << endl;
   cout << \"Product is \";
   prod.printData();
   cout << endl << endl;
   cout << \"Quotient is \";
   quo.printData();
   cout << endl << endl;
f1.recip();
   f2.recip();
   cout << \"The reciprocals are \";
   f1.printData();
   cout << \" \";
   f2.printData();
   cout << endl << endl;
   system(\"PAUSE\");
   return 0;
}

Output should have MIXED FRACTIONS ONLY. Not improper fractions.

Solution

PROGRAM CODE:

/*

* main.cpp

*

* Created on: 31-Oct-2016

* Author: kaju

*/

#include <iostream>

using namespace std;

class Fraction {

public:

Fraction(int = 1, int = 1, int = 1);

void printData();

void add(Fraction, Fraction);

void sub(Fraction, Fraction);

void mult(Fraction, Fraction);

void divide(Fraction, Fraction);

Fraction recip();

void reduce();

private:

int whole, num, den;

};

void Fraction::reduce()

{

   while(num%2 == 0 && den%2 == 0)

   {

       num = num/2;

       den = den/2;

   }

   while(num%3 == 0 && den%3 == 0)

   {

       num = num/3;

       den = den/3;

   }

   while(num%5 == 0 && den%5 == 0)

   {

       num = num/5;

       den = den/5;

   }

}

Fraction::Fraction(int whole, int num, int den)

{

   this->den = den;

   this->whole = whole;

   this->num = num;

   reduce();

}

void Fraction::printData()

{

   if(whole == 0)

       cout<<num<<\"/\"<<den;

   else

       cout<<whole<<\" \"<<num<<\"/\"<<den;

}

void Fraction::add(Fraction num1, Fraction num2)

{

   int improperNum1, improperNum2;

   improperNum1 = num1.den*num1.whole+num1.num;

   improperNum2 = num2.den*num2.whole+num2.num;

   int sum;

   if(num1.den == num2.den)

   {

       sum = improperNum1 + improperNum2;

       whole = sum/num1.den;

       num = sum%num1.den;

       den = num1.den;

   }

   else

   {

       den = num1.den*num2.den;

       sum = improperNum1*num2.den + improperNum2*num1.den;

       whole = sum/den;

       num = sum%den;

   }

   reduce();

}

void Fraction::sub(Fraction num1, Fraction num2)

{

   int improperNum1, improperNum2;

   improperNum1 = num1.den*num1.whole+num1.num;

   improperNum2 = num2.den*num2.whole+num2.num;

   int sub;

   if(num1.den == num2.den)

   {

       sub = improperNum1 - improperNum2;

       whole = sub/num1.den;

       num = sub%num1.den;

       den = num1.den;

   }

   else

   {

       sub = improperNum1*num2.den - improperNum2*num1.den;

       den = num1.den*num2.den;

       whole = sub/den;

       num = sub%den;

   }

   reduce();

}

void Fraction::mult(Fraction num1, Fraction num2)

{

   int improperNum1, improperNum2, numerator;

   improperNum1 = num1.den*num1.whole+num1.num;

   improperNum2 = num2.den*num2.whole+num2.num;

   den = num1.den*num2.den;

   numerator = improperNum1*improperNum2;

   whole = numerator/den;

   num = numerator%den;

   reduce();

}

void Fraction::divide(Fraction num1, Fraction num2)

{

   int improperNum1, improperNum2, numerator;

   improperNum1 = num1.den*num1.whole+num1.num;

   improperNum2 = num2.den*num2.whole+num2.num;

   den = num1.den*improperNum2;

   numerator = improperNum1*num2.den;

   whole = numerator/den;

   num = numerator%den;

   reduce();

}

Fraction Fraction::recip()

{

   Fraction f1(0,0,1);

   int numerator = whole * den + num;

   f1.den = numerator;

   if(f1.den<den)

   {

       f1.whole = 0;

       f1.num = den;

   }

   else

   {

       f1.whole = den/f1.den;

       f1.num = den%f1.den;

   }

   reduce();

   return f1;

}

int main()

{

   Fraction f1(8, 12, 14), f2(3, 4, 6), sum, diff, prod, quo;

   cout << \"The fractions are \" << endl;

   f1.printData();

   cout << \" and \";

   f2.printData();

   cout << endl << endl;

   sum.add(f1, f2);

   diff.sub(f1, f2);

   prod.mult(f1, f2);

   quo.divide(f1, f2);

   cout << \"Sum is \";

   sum.printData();

   cout << endl << endl;

   cout << \"Difference is \";

   diff.printData();

   cout << endl << endl;

   cout << \"Product is \";

   prod.printData();

   cout << endl << endl;

   cout << \"Quotient is \";

   quo.printData();

   cout << endl << endl;

   f1 = f1.recip();

   f2 = f2.recip();

   cout << \"The reciprocals are \";

   f1.printData();

   cout << \" \";

   f2.printData();

   cout << endl << endl;

   return 0;

}


OUTPUT:

The fractions are

8 6/7 and 3 2/3

Sum is 12 11/21

Difference is 5 4/21

Product is 32 10/21

Quotient is 2 32/77

The reciprocals are 7/62 3/11

Write a C++ program which create a class for working with mixed fractions. MUST BE MIXED, NOT IMPROPER. GIVEN: The main. class Fraction { public: Fraction(int =
Write a C++ program which create a class for working with mixed fractions. MUST BE MIXED, NOT IMPROPER. GIVEN: The main. class Fraction { public: Fraction(int =
Write a C++ program which create a class for working with mixed fractions. MUST BE MIXED, NOT IMPROPER. GIVEN: The main. class Fraction { public: Fraction(int =
Write a C++ program which create a class for working with mixed fractions. MUST BE MIXED, NOT IMPROPER. GIVEN: The main. class Fraction { public: Fraction(int =
Write a C++ program which create a class for working with mixed fractions. MUST BE MIXED, NOT IMPROPER. GIVEN: The main. class Fraction { public: Fraction(int =
Write a C++ program which create a class for working with mixed fractions. MUST BE MIXED, NOT IMPROPER. GIVEN: The main. class Fraction { public: Fraction(int =
Write a C++ program which create a class for working with mixed fractions. MUST BE MIXED, NOT IMPROPER. GIVEN: The main. class Fraction { public: Fraction(int =

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site