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

Need programming help with overloaded functions UML fractionType -numerator: int

ID: 3680292 • Letter: N

Question

Need programming help with overloaded functions

UML

fractionType

-numerator: int

-denominator: int

+operator<<(ostream&, const fractionType&): ostream&

+operator>>(istream&, fractionType&): istream&

+setFraction(int, int): void

+operator+(const fractionType&) const: fractionType

+operator-(const fractionType&) const: fractionType

+operator*(const fractionType&) const: fractionType

+operator/(const fractionType&) const: fractionType

+operator==(const fractionType&) const: bool

+operator!=(const fractionType&) const: bool

+operator<=(const fractionType&) const: bool

+operator<(const fractionType&) const: bool

+operator>=(const fractionType&) const: bool

+operator>(const fractionType&) const: bool

Rational fractions are of the form a / b, in which a and b are integers and b 0. In this exercise, by ‘‘fractions’’ we mean rational fractions. Suppose a /  b and  c /  d are fractions. Arithmetic operations on fractions are
defined by the following rules:

a/b + c/d = (ad + bc)/bd

a/b - c/d = (ad - bc)/bd

a/b × c/d = ac/bd

(a/b)/(c/d) = ad/bc, in which c/d 0.

Fractions are compared as follows: a / b op c / d if ad op bc, in which op is any of the relational operations. For example, a / b < c / d if ad < bc.

Design a class called fractionType that performs the arithmetic and relational operations on fractions. Overload the arithmetic and relational operators so that the appropriate symbols can be used to perform the operation. Also, overload the stream insertion and stream extraction operators for easy input and output. Write a C++ program that, using the class fractionType, performs operations on fractions.

Among other things, test the following: Suppose x, y, and z are objects of type fractionType. If the input is2/3, the statement: cin >> x; hould store 2/3 in x.

The statement: cout << x + y << endl; should output the value of x + y in fraction form.

The statement: z = x + y; should store the sum of x and y in z in fraction form. Your answer need not be in the lowest terms.

The UML diagram for the fractionType class is provided. The test program should produce output similar to the following:

Constructor with parameters 5, 6: Num1 = 5 / 6
Default constructor (no parameters): Num2 = 0 / 1
Enter a fraction in the form a / b:   1 / 7
New value of num2 = 1 / 7
Assign num1 + num2 to num3: 41 / 42
5 / 6 + 1 / 7 = 41 / 42
(5 / 6) * (1 / 7) = 5 / 42
Assign num1 - num2 to num3 = 29 / 42
(5 / 6) - (1 / 7) = 29 / 42
(5 / 6) / (1 / 7) = 35 / 6

Turn in:

fractionType.h

fractionType.cpp

fractionTest.cpp

fractionType

-numerator: int

-denominator: int

+operator<<(ostream&, const fractionType&): ostream&

+operator>>(istream&, fractionType&): istream&

+setFraction(int, int): void

+operator+(const fractionType&) const: fractionType

+operator-(const fractionType&) const: fractionType

+operator*(const fractionType&) const: fractionType

+operator/(const fractionType&) const: fractionType

+operator==(const fractionType&) const: bool

+operator!=(const fractionType&) const: bool

+operator<=(const fractionType&) const: bool

+operator<(const fractionType&) const: bool

+operator>=(const fractionType&) const: bool

+operator>(const fractionType&) const: bool

Explanation / Answer

header file

#ifndef fractionType_h
#define fractionType_h

#include <iostream>
using namespace std;

class fractionType
{
private:

int numerator, denominator;

public:

void setFraction(const int& num, const int& den);
int getNumerator() const;
int getDenominator() const;
fractionType(int num = 0, int den = 1);
fractionType operator+(const fractionType& tempFraction) const;
fractionType operator-(const fractionType& tempFraction) const;
fractionType operator*(const fractionType& tempFraction) const;
fractionType operator/(const fractionType& tempFraction) const;
bool operator==(const fractionType& tempFraction) const;
bool operator!=(const fractionType& tempFraction) const;
bool operator<=(const fractionType& tempFraction) const;
bool operator<(const fractionType& tempFraction) const;
bool operator>=(const fractionType& tempFraction) const;
bool operator>(const fractionType& tempFraction) const;
};

-------------------------------------------------------------------------------------------------------------------------------------------------------

fractionType.cpp

#include<iostream>
#include "fractionType.h"
using namespace std;

void fractionType::setFraction(const int& num, const int& den)
{
   numerator = num;
   denominator = den;
   if (den == 0)
       cout << "sorry denominator 0 is undefined";
}

int fractionType::getNumerator() const
{
   return numerator;
}

int fractionType::getDenominator() const
{
   return denominator;
}

fractionType::fractionType(int num, int den)
{
   numerator = num;
   denominator = den;
  
}

fractionType fractionType::operator+(const fractionType& tempFraction) const
{
   fractionType temp;
   if (denominator == tempFraction.denominator)
   {
       temp.numerator = numerator + tempFraction.numerator;
       temp.denominator = denominator;
   }
   else
   {
       temp.numerator = numerator * tempFraction.numerator * denominator;
       temp.denominator = denominator * tempFraction.denominator;
   }
   return temp;
}

fractionType fractionType::operator-(const fractionType& tempFraction) const
{
   fractionType temp;
   if (denominator == tempFraction.denominator)
   {
       temp.numerator = numerator - tempFraction.numerator;
       temp.denominator = denominator;
   }
   else
   {
       temp.numerator = numerator * tempFraction.numerator * denominator;
       temp.denominator = denominator * tempFraction.denominator;
   }
   return temp;
}

fractionType fractionType::operator*(const fractionType& tempFraction) const
{
   fractionType temp;
   temp.numerator = numerator * tempFraction.numerator;
   temp.denominator = denominator * tempFraction.denominator;
   return temp;
}

fractionType fractionType::operator/(const fractionType& tempFraction) const
{
   fractionType temp;
   temp.numerator = numerator * tempFraction.denominator;
   temp.denominator = denominator * tempFraction.numerator;
   return temp;
}

bool fractionType::operator==(const fractionType& tempFraction) const
{
if(numerator == tempFraction.numerator && denominator == tempFraction.denominator){
   return true;
}
return false;
}

bool fractionType::operator!=(const fractionType& tempFraction) const
{
if(numerator == tempFraction.numerator && denominator == tempFraction.denominator){
   return false;
}
return true;
}

bool fractionType::operator<=(const fractionType& tempFraction) const
{
int ad = numerator * tempFraction.denominator;
int bc = denominator * tempFraction.numerator;
if(ad <= bc){
   return true;
}
return false;
}
bool fractionType::operator<(const fractionType& tempFraction) const
{
int ad = numerator * tempFraction.denominator;
int bc = denominator * tempFraction.numerator;
if(ad < bc){
   return true;
}
return false;
}
bool fractionType::operator>=(const fractionType& tempFraction) const
{
int ad = numerator * tempFraction.denominator;
int bc = denominator * tempFraction.numerator;
if(ad >= bc){
   return true;
}
return false;
}
bool fractionType::operator>(const fractionType& tempFraction) const
{
int ad = numerator * tempFraction.denominator;
int bc = denominator * tempFraction.numerator;
if(ad > bc){
   return true;
}
return false;
}

------------------------------------------------------------------------------------------------------------------------------------------------------

fractionTest.cpp

#include <iostream>
using namespace std;

int main(){

   //variabled declared
   int numerator1,denominator1,numerator2,denominator2;
   //reading values
   cout<<"Enter numerator: ";
   cin>>numerator1;
   cout<<"Enter denominator: ";
   cin>>denominator1;
   cout<<"Enter numerator: ";
   cin>>numerator2;
   cout<<"Enter denominator: ";
   cin>>denominator2;

//creating objects
fractionType obj1(numerator1,denominator1);
fractionType obj2(numerator2,denominator2);

//calling functions
fractionType tempObj = obj1 + obj2;
cout<<" After adding: "<<tempObj.numerator<<" / "<<tempObj.denominator;
   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