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

I need help with a program in C++ Data Structures Write a program to implement a

ID: 3541507 • Letter: I

Question

I need help with a program in C++ Data Structures

Write a program to implement an abstract data type Rational-Numbers.  A Rational number has two parts, numerator and denominator.  Example 1/2 and 3/5 are rational numbers.  You can perform math operations on rational numbers and the results are rational numbers.  The following are the operations to implement.

Test the code with the following data:

Rational numbers:    a = 3/8,   b= 4/7, c = 1/5,  d = 4/12, e = 3/5   f = 4/1 and

                                                            g = 3/0 (your program should not error)

Compute and output the two rational numbers and their results:  a + b,      c * d,     d / e,    c

Add = alpha / beta + chi / delta = alpha delta + beta chi / beta delta Sub = alpha / beta - chi / delta = alpha delta - beta chi/beta delta Mult = alpha / beta * chi/delta = alpha chi + beta delta Div = alpha / beta/chi/delta = alpha delta / beta chi

Explanation / Answer

#include <iostream>

using namespace std;
class RationalNumber
{
    private:
    float nr;
    float dr;
    public:
    RationalNumber()
    {
       
    }
    RationalNumber(float nmr, float dmr)
    {
        nr=nmr;
        if(dmr==0)
        {
            cout<<"invalid data"<<endl;
        }
        else
        dr=dmr;
    }
    float getNr()
    {
        return nr;
    }
    float getDr()
    {
        return dr;
    }
    RationalNumber add(RationalNumber r1)
    {
        return RationalNumber((nr*r1.getDr()+r1.getNr()*dr),(dr*r1.getDr()));
    }
   
    RationalNumber sub(RationalNumber r1)
    {
        return RationalNumber((nr*r1.getDr()-r1.getNr()*dr),(dr*r1.getDr()));
    }
    RationalNumber mult(RationalNumber r1)
    {
        return RationalNumber((nr*r1.getNr()),(dr*r1.getDr()));
    }
    RationalNumber divi(RationalNumber r1)
    {
        return RationalNumber((nr*r1.getDr()),(dr*r1.getNr()));
    }
   
    void final()
    {
        for(int i=1;i<=dr;i++)
        {
            if((int)nr%i==0 && (int)dr%i==0)
            {
              nr=nr/i;
              dr=dr/i;   
            }
           
        }
    }
    void equal(RationalNumber r1)
    {
        if(r1.getNr()==nr && r1.getDr()==dr)
        {
            cout<<"Equal Operands are:"<<nr<<"    "<<dr;
        }
        else
        {
            cout<<"Operands of rational number 1:"<<nr<<"    "<<dr<<endl;
            cout<<"Operands of rational number 1:"<<r1.getNr()<<"    "<<r1.getDr()<<endl;
            cout<<"Operands are not equal"<<endl;
        }
    }
};

int main()
{
   RationalNumber a(3,8);
   RationalNumber b(4,7);
   RationalNumber c(1,5);
   RationalNumber d(4,12);
   RationalNumber e(3,5);
   RationalNumber f(4,1);
   RationalNumber g(3,0);
   cout<<"a+b="<<a.add(b).getNr()<<"/"<<a.add(b).getDr()<<endl;
   cout<<"c*d="<<c.mult(d).getNr()<<"/"<< c.mult(d).getDr()<<endl;
   cout<<"d/e="<<d.divi(e).getNr()<< "/" << d.divi(e).getDr()<<endl;
   cout<<"c-a="<<c.sub(a).getNr()<<"/"<< c.sub(a).getDr() <<endl;
   RationalNumber result = a.add(b.mult(f).sub(d));
   cout<<"a+b*f-d="<<result.getNr()<<"/"<< result.getDr()<<endl;
   result = d.divi(a).add(c);
   cout<<"a+b*f-d="<<result.getNr()<<"/"<< result.getDr()<<endl;
   d.final();
   b.final();
   e.final();
   a.final();
   d.equal(b);
   e.equal(a);
  
   return 0;
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote