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

C++ Language, Microsoft Visual Studio 2015 4.6 (Rat ional Class) Create a class

ID: 3596432 • Letter: C

Question


C++ Language, Microsoft Visual Studio 2015 4.6 (Rat ional Class) Create a class called Rational for performing arithmetic with fractions Write a program to test your class. Use integer variables to represent the private data of the class- the numerator and the denominator. Provide a constructor that enables an object of this class to be initialized when it's declared. The constructor should contain default values in case no initializers are provided and should store the fraction in reduced form. For example, the fraction would be stored in the object as 1 in the numerator and 2 in the denominator. Provide public member functions that perform each of the following tasks: a) add-Adds two Rational numbers. The result should be stored in reduced form. b) subtract-Subtracts two Rational numbers. Store the result in reduced form. c) multiply-Multiplies two Rational numbers. Store the result in reduced form. d) e) divide-Divides two Rational numbers. The result should be stored in reduced form. toRationalString-Returns a string representation of a Rational number in the form a/b, where a is the numerator and b is the denominator. f) toDouble-Returns the Rational number as a double.

Explanation / Answer

//rationalNumber.h

class rationalNumber

{

private:

int numerator;

int denominator;

public:

rationalNumber(); //default constructor

rationalNumber(int num,int den); //argument constructor

rationalNumber normalize(); // normalization using GCD

//arithmetic operations using functions

rationalNumber add(rationalNumber r);

rationalNumber subtract(rationalNumber r);

rationalNumber multiply(rationalNumber r);

rationalNumber divide(rationalNumber r);

void toRationalString();

double toDouble();

};

#endif

//implementation file rational.cpp

#include <iostream>

using namespace std;

#include "RATIONALNUMBER.H"

rationalNumber::rationalNumber() //default constructor

{

numerator = 0;

denominator = 1;

}

rationalNumber::rationalNumber(int num,int den) //argument constructor

{

numerator=num;

denominator=den;

}

rationalNumber rationalNumber::normalize() // normalization using GCD

{

rationalNumber temp;

int x,y,z;

x=numerator;

y=denominator;

z=(x*x<y*y)?(z=x):(z=y);

for(int i=2;i*i<=z*z;i++)

{

while((x%i)==0 && (y%i)==0)

{

x=x/i;

y=y/i;

z=z/i;

}

}

if(y<0)

{

temp.numerator=-x;

temp.denominator=-y;

}

else

{

temp.numerator=x;

temp.denominator=y;

}

return temp;

}

//arithmetic operations using functions

rationalNumber rationalNumber::add(rationalNumber r)

{

rationalNumber temp;

temp.numerator=this->numerator*r.denominator+r.numerator*this->denominator;

temp.denominator= this->denominator*r.denominator;

return temp;

}

rationalNumber rationalNumber::subtract(rationalNumber r)

{

rationalNumber temp;

temp.numerator=this->numerator*r.denominator-r.numerator*this->denominator;

temp.denominator=this->denominator*r.denominator;

return temp;

}

rationalNumber rationalNumber::multiply(rationalNumber r)

{

rationalNumber temp;

temp.numerator=this->numerator*r.numerator;

temp.denominator=this->denominator*r.denominator;

return temp;

  

}

rationalNumber rationalNumber::divide(rationalNumber r)

{

rationalNumber temp;

temp.numerator=this->numerator*r.denominator;

temp.denominator=this->denominator*r.numerator;

return temp;

}

void rationalNumber::toRationalString()

{

cout<<numerator<<"/"<<denominator;

}

double rationalNumber::toDouble()

{

return (double)numerator/denominator;

}

int main() {

rationalNumber rn1(2,3);

rationalNumber rn2(3,5);

rationalNumber rn3;

int choice;

cout<<"Rational Number Operations";

cout<<" 1.Addition";

cout<<" 2.Subtraction";

cout<<" 3.Multiplication";

cout<<" 4.Division";

cout<<" Enter operation number";

cin>>choice;

cout<<" Result : ";

switch(choice)

{

case 1: rn3= rn1.add(rn2).normalize();

rn3.toRationalString();

  

break;

case 2:rn3=rn1.subtract(rn2).normalize();

rn3.toRationalString();

break;

case 3: rn3=rn1.multiply(rn2).normalize();

rn3.toRationalString();

break;

case 4: rn3=rn1.divide(rn2).normalize();

rn3.toRationalString();

break;

default:

cout<<"Enter valid choice of operation";

break;

}

cout<<" rn1 to double :"<<rn1.toDouble();

return 0;

}

Output:

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Chat Now And Get Quote