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 chiExplanation / 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;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.