+1 678 648 4277 

Use our rational numbers in C++ assignment sample for free.

Looking for free rational numbers in C++ assignment sample? Here is one. We do not sell our samples as they are meant for revision by our clients. These samples also show new clients the quality of solutions to expect from us when they hire us to complete their assignments. Therefore use our samples without any limits. More than should you need our rational numbers in C++ assignment help, hire us at any time. We will guarantee you quality solutions.

Rational Numbers in C++ Assignment Sample

Rational numbers are commonly called fractions in everyday usage. So if you wanted to calculate ½ + ¼ the answer would be ¾. This is a lot easier to read than 0.5 + 0.25 = 0.75. The constructor should ensure the denominator is a positive integer. Complete overloaded operators for addition, subtraction, multiplication, division, and comparison. Write a toString method to convert the representation into a string. For additional C++ programming assignments help contact us for a quote.

Solution:

Rational.h

/*
* Rational.h
*
*/

#ifndef RATIONAL_H_
#define RATIONAL_H_
#include
#include
#include
#include
using namespace std;
class Rational
{
public:
Rational();
Rational(int whole_number);
Rational(int num, int denom);
friend Rational operator*(const Rational& rational1, const Rational& rational2);
friend Rational operator/(const Rational& rational1, const Rational& rational2);
friend Rational operator+(const Rational& rational1, const Rational& rational2);
friend Rational operator-(const Rational& rational1, const Rational& rational2);
friend bool operator==(const Rational& rational1, const Rational& rational2);
friend bool operator!=(const Rational& rational1, const Rational& rational2);
string toString();
private:
int numerator;
int denominator;
void reduce();
};

#endif /* RATIONAL_H_ */

Rational.cpp

/*
* Rational.cpp
*
*/

#include “Rational.h”

Rational::Rational()
{
numerator = 0;
denominator = 1;
}

Rational::Rational(int whole_number)
{
numerator = whole_number;
denominator = 1;

}

Rational::Rational(int num, int denom)
{
numerator = num;
denominator = denom;

if (denominator < 0)
{
denominator *= -1;
numerator *= -1;
}

int remainder = numerator % denominator;
int old = denominator;
while (remainder != 0)
{
int temp = remainder;
remainder = old % remainder;
old = temp;
}
numerator = numerator / old;
denominator = denominator / old;
}

Rational operator*(const Rational& rational1, const Rational& rational2)
{
Rational ret;
ret.numerator = rational1.numerator * rational2.numerator;
ret.denominator = rational1.denominator * rational2.denominator;
ret.reduce();
return ret;
}

Rational operator/(const Rational& rational1, const Rational& rational2)
{
Rational ret;
int temp_rational2_denom;
int temp_rational2_num;
temp_rational2_num = rational2.denominator;
temp_rational2_denom = rational2.numerator;
ret.numerator = rational1.numerator * temp_rational2_num;
ret.denominator = rational1.denominator * temp_rational2_denom;
ret.reduce();
return ret;
}

Rational operator+(const Rational& rational1, const Rational& rational2)
{
Rational ret;
int temp1_num;
int temp2_num;
temp1_num = rational1.numerator * rational2.denominator;
temp2_num = rational1.denominator * rational2.numerator;
ret.numerator = temp1_num + temp2_num;
ret.denominator = rational1.denominator * rational2.denominator;
ret.reduce();
return ret;
}

Rational operator-(const Rational& rational1, const Rational& rational2)
{
Rational ret;
ret.numerator = (rational1.numerator * rational2.denominator) – (rational2.numerator * rational1.denominator);
ret.denominator = rational1.denominator * rational2.denominator;
ret.reduce();
return ret;
}

bool operator==(const Rational& rational1, const Rational& rational2)
{
if ((rational1.numerator * rational2.denominator) == (rational1.denominator * rational2.numerator))
{
return true;
}
else
{
return false;
}
}

bool operator!=(const Rational& rational1, const Rational& rational2)
{
if ((rational1.numerator * rational2.denominator) != (rational1.denominator * rational2.numerator))
{
return true;
}
else
{
return false;
}
}

string Rational::toString()
{
reduce();
ostringstream result;
result << numerator << “/” << denominator;
return result.str();

}

void Rational::reduce()
{
int remainder = numerator % denominator;
int old = denominator;
while (remainder != 0)
{
int temp = remainder;
remainder = old % remainder;
old = temp;
}
numerator = numerator / old;
denominator = denominator / old;
}