Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifndef RATIONALNUMBER_H_INCLUDED
- #define RATIONALNUMBER_H_INCLUDED
- #include <stdexcept>
- #include <iostream>
- #include <iomanip>
- using namespace std;
- class RationalNumber {
- public:
- RationalNumber(int num, int denom)
- :numerator(num), denominator(denom){
- setNum(num);
- setDenom(denom);
- if (denom == 0) {
- throw invalid_argument("Denominator cannot be zero.");
- } else if (denom < 0) {
- throw invalid_argument("Denominator cannot be negative.");
- }
- cout << "\n" << fractionForm();
- simplify();
- cout << " simplifies to " << fractionForm() << "\n" << endl;
- }
- void setNum(int num) {
- num = numerator;
- }
- int getNum() {
- return numerator;
- }
- void setDenom(int denom) {
- denominator = denom;
- }
- int getDenom () {
- return denominator;
- }
- string simplify() {
- for (int i = denominator * numerator; i > 1; i--) {
- if (numerator == 0) {
- return "1";
- }
- if ((denominator % i == 0) && (numerator % i == 0)) {
- denominator = denominator / i;
- numerator = numerator / i;
- if (denominator == 1) {
- return to_string(numerator);
- } else {
- return to_string(numerator) + "/" + to_string(denominator);
- }
- }
- }
- //cout << numerator << "/" << denominator << endl;
- }
- string fractionForm() {
- // return to_string(num) + "/" + to_string(denom);
- //return getNum() + "/" + getDenom();
- if (numerator == 0 || (numerator == 1 && denominator == 1)) {
- return "1";
- }
- if(denominator == 1) {
- return to_string(numerator);
- } else {
- return to_string(numerator) + "/" + to_string(denominator);
- }
- }
- void operator+(RationalNumber& fraction) const{
- cout << "\n---A D D I N G " << fraction.numerator << "/" << fraction.denominator << " T O " << numerator << "/" << denominator << " ---" << endl;
- if (fraction.denominator != denominator) {
- fraction.numerator = (numerator * fraction.denominator) + (fraction.numerator * denominator);
- fraction.denominator = denominator * fraction.denominator;
- } else if (fraction.denominator == denominator) {
- fraction.numerator = (numerator + fraction.numerator);
- }
- if (fraction.numerator != fraction.denominator) {
- fraction.simplify();
- cout << " = " << fraction.fractionForm() << endl;
- } else if (fraction.numerator == fraction.denominator) {
- cout << " = 1" << endl;
- }
- }
- void operator-(RationalNumber& fraction) const{
- cout << "\n---S U B T R A C T I N G " << fraction.numerator << "/" << fraction.denominator << " F R O M " << numerator << "/" << denominator << "---" << endl;
- if (fraction.denominator != denominator) {
- fraction.numerator = (fraction.numerator * denominator);
- fraction.denominator = denominator * fraction.denominator;
- fraction.simplify();
- } else if (fraction.denominator == denominator) {
- fraction.numerator = (numerator - fraction.numerator);
- }
- if (fraction.numerator != fraction.denominator) {
- fraction.simplify();
- cout << " = " << fraction.fractionForm() << endl;
- } else if (fraction.numerator == fraction.denominator) {
- cout << " = 1" << endl;
- }
- }
- void operator*(RationalNumber& fraction) const{
- cout << "\n---M U L T I P L Y I N G " << numerator << "/" << denominator << " B Y " << fraction.numerator << "/" << fraction.denominator << "---" << endl;
- fraction.numerator = numerator * fraction.numerator;
- fraction.denominator = denominator * fraction.denominator;
- fraction.simplify();
- cout << " = " << fraction.fractionForm() << endl;
- }
- void operator/(RationalNumber& fraction) {
- cout << "\n---D I V I D I N G " << fractionForm() << " B Y " << fraction.fractionForm() << "---" << endl;
- int num{};
- int denom{};
- denom = denominator * fraction.numerator;
- num = numerator * fraction.denominator;
- fraction.denominator = denom;
- fraction.numerator = num;
- fraction.simplify();
- cout << " = " << fraction.fractionForm() << endl;
- }
- private:
- int numerator{};
- int denominator{};
- };
- #endif // RATIONALNUMBER_H_INCLUDED
- #include <iostream>
- #include "RationalNumber.h"
- using namespace std;
- int main()
- {
- RationalNumber test{4, 8};
- RationalNumber rat{3, 12};
- RationalNumber a{4, 32};
- RationalNumber b{4, 4};
- a + b;
- rat * test;
- RationalNumber c{1, 4};
- RationalNumber d{1, 8};
- c / d;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment