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







