Object-oriented Programming with C++
Assignment: Create a Rational class in c++ to perform arithmetic operation with fractional numbers.
- 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 is 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 2/4 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:
Adding two Rational numbers. The result should be stored in reduced form.
Subtracting two Rational numbers. The result should be stored in reduced form.
Multiplying two Rational numbers. The result should be stored in reduced form.
Dividing two Rational numbers. The result should be stored in reduced form.
Printing Rational numbers in the form a/b, where a is the numerator and b is the denominator.
Printing Rational numbers in floating-points format.
Rational.h
/* Author : William Chanrico Date : 12/03/2016 Summary : Class representing rational number Tested on gcc version 5.1.0 (i686-posix-dwarf-rev0, Built by MinGW-W64 project) >> g++ Demo.cpp Rational.cpp -o a.exe */ #ifndef RATIONAL_H #define RATIONAL_H class Rational{ private: int numerator; int denominator; int GCD(int x, int y); // Finding greatest commond divisor to calculate reduced form of rationals public: Rational(int numerator = 1, int denominator = 1); // Constructor void printFraction() const; // Print rational in form "numerator/denominator" void printDecimalFraction() const; // Print rational in decimal fraction format Rational add(const Rational &other) const; // Calculate addition Rational subtract(const Rational &other) const; // Calculate subtraction Rational multiply(const Rational &other) const; // Calculate multiplication Rational divide(const Rational &other) const; // Calculate division // Operator overloading for convenient use Rational operator+(const Rational &other) const; Rational operator-(const Rational &other) const; Rational operator*(const Rational &other) const; Rational operator/(const Rational &other) const; operator std::string() const; operator float() const; }; #endif /* RATIONAL_H */
Rational.cpp
#include <iostream> #include <sstream> #include "Rational.h" Rational::Rational(int numerator, int denominator){ this->numerator = numerator; this->denominator = denominator; int reducer = GCD(numerator, denominator); this->numerator /= reducer; this->denominator /= reducer; if(this->denominator < 0){ this->numerator *= -1; this->denominator *= -1; } } int Rational::GCD(int x, int y){ return (y == 0) ? x : GCD(y, x % y); } void Rational::printFraction() const{ std::cout << (std::string) *this; } void Rational::printDecimalFraction() const{ std::cout << (float) *this; } Rational Rational::add(const Rational &other) const{ int ansNumerator = (numerator * other.denominator) + (other.numerator * denominator); int ansDenominator = denominator * other.denominator; Rational ans(ansNumerator, ansDenominator); return ans; } Rational Rational::subtract(const Rational &other) const{ int ansNumerator = (numerator * other.denominator) - (other.numerator * denominator); int ansDenominator = denominator * other.denominator; Rational ans(ansNumerator, ansDenominator); return ans; } Rational Rational::multiply(const Rational &other) const{ int ansNumerator = (numerator * other.numerator); int ansDenominator = (denominator * other.denominator); Rational ans(ansNumerator, ansDenominator); return ans; } Rational Rational::divide(const Rational &other) const{ Rational divider(other.denominator, other.numerator); int ansNumerator = (numerator * divider.numerator); int ansDenominator = (denominator * divider.denominator); Rational ans(ansNumerator, ansDenominator); return ans; } Rational Rational::operator+(const Rational &other) const{ return (*this).add(other); } Rational Rational::operator-(const Rational &other) const{ return (*this).subtract(other); } Rational Rational::operator*(const Rational &other) const{ return (*this).multiply(other); } Rational Rational::operator/(const Rational &other) const{ return (*this).divide(other); } Rational::operator std::string() const{ std::stringstream ss; ss << numerator << "/" << denominator; return ss.str(); } Rational::operator float() const{ return (float) numerator / denominator; }
DemoRational.cpp
#include <iostream> #include "Rational.h" int main(){ Rational obj1(-5, 9); Rational obj2(-17, 2); Rational obj3 = obj1 * obj2; // obj3 = obj1.multiply(obj2) std::cout << (std::string) obj3 << "\n"; // obj3.printFraction() std::cout << (float) obj3 << "\n"; // obj3.printDecimalFraction() }
i need basic steps kindly provide me . I Am In Beginning to learn oops.