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

hello This program will convert to a rational class,plz I need to have a rationa

ID: 3644168 • Letter: H

Question

hello

This program will convert to a rational class,plz
I need to have a rational class.

THANKS


#include <iostream>
class fracType
{
public:
fracType(); // default constructor
void setFrac (int newNum,int newDen);
fracType Add (fracType otherFraction) const;
fracType Sub (fracType otherFraction) const;
fracType Mul (fracType otherFraction) const;
fracType Div (fracType otherFraction) const;
void simplify();
void showFrac() const;
void showDec() const;

private:
int numerator;
int denominator;
};



using namespace std;


int main()
{
bool exit=false;

do
{

int num;
int den;
fracType num1;
fracType num2;
fracType result;
int choice;
bool error;
do{
error=false;
cout << " What is the numerator of the first fraction? ";
if(!(cin >> num)) {
cout << "Please enter numeric characters only. " ;
cin.clear();
cin.ignore(10000,' ');
error=true;
}
}while(error);
do{
error=false;
cout << "What is the denominator of the first fraction? ";
if(!(cin >> den)) {
cout << "Please enter numeric characters only. " ;
cin.clear();
cin.ignore(10000,' ');
error=true;
}
}while(error);
num1.setFrac(num, den);
do{
error=false;
cout << " What is the numerator of the second fraction? ";
if(!(cin >> num)) {
cout << "Please enter numeric characters only. " ;
cin.clear();
cin.ignore(10000,' ');
error=true;
}
}while(error);
do{
error=false;
cout << "What is the denominator of the second fraction? ";
if(!(cin >> den)) {
cout << "Please enter numeric characters only. " ;
cin.clear();
cin.ignore(10000,' ');
error=true;
}
}while(error);
num2.setFrac(num, den);
cout << endl;
do{
error=false;
cout << "Enter a number from 1 to 5 "
<< "1. Displays the sum of the two fractions "
<< "2. Displays the difference "
<< "3. Displays the product "
<< "4. Displays the quotient "
<< "5. Exit "
<< " Selection is ";
if(!(cin >> choice)) {
cout << "Please enter numeric characters only. " ;
cin.clear();
cin.ignore(10000,' ');
error=true;
}
}while(error);

cout << endl;
exit=false;

switch (choice)
{
case 1:
cout << endl;
num1.showFrac();
cout << " + ";
num2.showFrac();
cout << " = ";
result = num1.Add(num2);
result.simplify();
result.showFrac();
result.showDec();
cout << endl;
break;
case 2:
num1.showFrac();
cout << " - ";
num2.showFrac();
cout << " = ";
result = num1.Sub(num2);
result.simplify();
result.showFrac();
result.showDec();
cout << endl;
break;
case 3:
num1.showFrac();
cout << " * ";
num2.showFrac();
cout << " = ";
result = num1.Mul(num2);
result.simplify();
result.showFrac();
result.showDec();
cout << endl;
break;
case 4:
num1.showFrac();
cout << " / ";
num2.showFrac();
cout << " = ";
result = num1.Div(num2);
result.simplify();
result.showFrac();
result.showDec();
cout << endl;
break;
case 5:
exit=true;
break;
default: cout << "Not an input between 1 and 7. ";
break;
}
}while (!exit);

system("pause");

}
void fracType::simplify() //Euclids algorithm
{ int a,b;
a=numerator;
b=denominator;
while(a!=b)
{if(a>b)
a -= b;
else
b -= a;
}
numerator/=a;
denominator/=a;
}
fracType::fracType()
{

numerator = 0;
denominator = 0;

}

void fracType::setFrac(int newNum, int newDen)
{
numerator = newNum;
denominator = newDen;

}

fracType fracType::Add(fracType otherFraction) const
{
fracType sum;
sum.numerator = numerator*otherFraction.denominator+otherFraction.numerator*denominator;
sum.denominator = denominator*otherFraction.denominator;
return sum;
}

fracType fracType::Sub(fracType otherFraction) const
{
fracType difference;
difference.numerator = numerator*otherFraction.denominator-otherFraction.numerator*denominator;
difference.denominator = denominator*otherFraction.denominator;
return difference;
}

fracType fracType::Mul(fracType otherFraction) const
{
fracType product;
product.numerator = numerator*otherFraction.numerator;
product.denominator = denominator*otherFraction.denominator;
return product;
}

fracType fracType::Div(fracType otherFraction) const
{
fracType quotient;
quotient.numerator = numerator*otherFraction.denominator;
quotient.denominator = denominator*otherFraction.numerator;
return quotient;
}


void fracType::showFrac() const
{ if(denominator>numerator)
cout << numerator << '/' << denominator;
else
if(numerator%denominator!=0)
cout<<numerator/denominator<<" "<<numerator%denominator<<"/"<<denominator;
else
cout<<numerator/denominator;

}
void fracType::showDec() const
{cout<<" = "<<numerator/(double)denominator;
}

Explanation / Answer

// Rational class definition.
import java.text.DecimalFormat;

public class Rational {
private int numerator, denominator;

// no-argument constructor
public Rational()
{
numerator = 1;
denominator = 1;
}

// initialize numerator part to n and denominator part to d
public Rational( int theNumerator, int theDenominator )
{
numerator = theNumerator;
denominator = theDenominator;
reduce();
}

// add two Rational numbers
public Rational sum( Rational right )
{
int resultDenominator = denominator * right.denominator;
int resultNumerator = numerator * right.denominator +
right.numerator * denominator;

return new Rational( resultNumerator, resultDenominator );
}

// subtract two Rational numbers
public Rational subtract( Rational right )
{
int resultDenominator = denominator * right.denominator;
int resultNumerator = numerator * right.denominator -
right.numerator * denominator;

return new Rational( resultNumerator, resultDenominator );
}

// multiply two Rational numbers
public Rational multiply( Rational right )
{
return new Rational( numerator * right.numerator,
denominator * right.denominator );
}

// divide two Rational numbers
public Rational divide( Rational right )
{
return new Rational( numerator * right.denominator,
denominator * right.numerator );
}

// reduce the fraction
private void reduce()
{
int gcd = 0;
int smaller;

if ( numerator < denominator )
smaller = numerator;
else
smaller = denominator;

for ( int divisor = smaller; divisor >= 2; divisor-- ) {

if ( numerator % divisor == 0 && denominator % divisor == 0 ) {
gcd = divisor;
break;
}
}

if ( gcd != 0 ) {
numerator /= gcd;
denominator /= gcd;
}
}

// return String representation of a Rational number
public String toRationalString()
{
return numerator + "/" + denominator;
}

// return floating-point String representation of
// a Rational number
public String toFloatString( int digits )
{
String format = "0.";

// get format string
for ( int i = 0; i < digits; i++ )
format += "0";

DecimalFormat twoDigits = new DecimalFormat( format );
return twoDigits.format(
( double )numerator / denominator ).toString();
}

} // end class Rational