Question: question Make a Fraction class with two int members (numerator and denominator). Create the following member functions: Create an Input function to allow the user

question

Make a Fraction class with two int members (numerator and denominator). Create the following member functions:

  • Create an Input function to allow the user to enter the numerator and denominator. Make sure to have exception or if condition to deal with a denominator of 0 (zero).
  • Create a Print function which will print out the Fraction in the form numerator/denominator i.e. 2/3
  • Empty constructor which initializes the Fraction zero
  • A one-parameter constructor for just a numerator (int). This would make the Fraction represent a whole number.
  • A one-parameter constructor with a double. This would make a Fraction by multiplying the double by 100000, then creating a numerator and denominator as the result. For example, PI, 3.14159, would be saved in a Fraction object as 314159/100000
  • A two-parameter constructor with both numerator (int) and denominator (int). This would make a Fraction with both a numerator and denominator
  • Add function taking a Fraction as a parameter and returning a Fraction
  • Subtract function taking a Fraction as a parameter and returning a Fraction
  • Multiply function taking a Fraction as a parameter and returning a Fraction
  • Divide function taking a Fraction as a parameter and returning a Fraction
  • Add function taking two Fractions as parameters and updating the current object
  • Subtract function taking two Fractions as parameters and updating the current object
  • Multiply function taking two Fractions as parameters and updating the current object
  • Divide function taking two Fractions as parameters and updating the current object

.

my code:

#include #include using namespace std;

//creating class to store information of fractions class Fraction { private: int numerator; int denominator; public: void input(); void print(); //default constructor Fraction(); //constructor for numerator int to make a fraction whole number Fraction(int n); //constructor with double Fraction(double); //constructor with two parameter for both int numerator and denominator Fraction(int&, int&); Fraction Add(Fraction&); Fraction Subract(Fraction&); Fraction multiply(Fraction&); Fraction divide(Fraction&); void Add(Fraction, Fraction); void Subract(Fraction, Fraction); void multiply(Fraction, Fraction); void divide(Fraction, Fraction);

};

//fraction.cpp

#include #include "fraction.h" using namespace std;

// defining the input function to allow user to enter the numerator and denominator void Fraction::input() { // Ask user to enter numerator value and store it cout << "Please enter numerator: "; cin >> numerator;

// Ask user to enter numerator valueand store it

if (denominator == 0) { cout << "Sorry denomiantor can't be zero"; } else { cout << "Please enter denominator not equals to zero: "; cin >> denominator; }

}

//defining the Print function which will print out the Fraction in the form numerator / denominator i.e. 2 / 3 void Fraction::print() { cout << numerator << "/" << denominator << endl; }

// defining the default ocnstructor Fraction::Fraction() { numerator = 0; denominator = 1;

}

// defining the parameterized constructor for numerator int to make a fraction whole number Fraction::Fraction(int n) { numerator = n; denominator = 1; }

//defining the parameterized constructor with double. This would make a Fraction by multiplying the double by 100000, then creating a numerator and denominator as the result. For example, PI, 3.14159, would be saved in a Fraction object as 314159/100000 Fraction::Fraction(double x) { x = x * 100000; numerator = x ; denominator = 100000; }

//defining a constructor with two-parameter with both numerator (int) and denominator (int). This would make a Fraction with both a numerator and denominator Fraction::Fraction(int& n, int& d) {

// if denomintaor is "0" while(d == 0) { //then set the numerator as 1 adn denominator as 0 cout << "denominator cannot be zero"< cout<< "please enter another denomiator so taht fraction can be calculated: " << endl; cin >> denominator; } //else if denominator is less than 0 if (d < 0) { //change the sign of numerator

numerator = 0 - d; denominator = 0 - n; } else { numerator = n; denominator = d; } }

//defining the Add function taking a Fraction as a parameter and returning a Fraction //Add function taking two Fractions as parameters and updating the current object f Fraction Fraction::Add(Fraction& obj_f) { obj_f.numerator= obj_f.numerator * denominator; numerator = numerator * obj_f.denominator; obj_f.numerator = obj_f.numerator + numerator; obj_f.denominator = obj_f.denominator * denominator; return obj_f;

}

// defining a Subtract function taking a Fraction as a parameter and returning a Fraction //Subtract function taking two Fractions as parameters and updating the current object Fraction Fraction::Subract(Fraction& obj_f) { obj_f.numerator = obj_f.numerator * denominator; numerator = numerator * obj_f.denominator; obj_f.numerator = obj_f.numerator - numerator; obj_f.denominator = obj_f.denominator * denominator; return obj_f; }

//Multiply function taking a Fraction as a parameterand returning a Fraction //Multiply function taking two Fractions as parametersand updating the current object Fraction Fraction::multiply(Fraction& obj_f) { obj_f.numerator = obj_f.numerator * numerator; obj_f.denominator = obj_f.denominator * denominator; return obj_f; }

//Divide function taking a Fraction as a parameterand returning a Fraction // Divide function taking two Fractions as parametersand updating the current object Fraction Fraction::divide(Fraction& obj_f) { obj_f.numerator = numerator * obj_f.denominator; obj_f.denominator = denominator * obj_f.numerator; return obj_f; }

void Fraction:: Add(Fraction obj1, Fraction obj2) { numerator = obj2.numerator * obj1.denominator + obj1.numerator * obj2.denominator; denominator = obj2.denominator * obj1.denominator; }

void Fraction::Subract(Fraction obj1, Fraction obj2) { numerator = obj1.numerator * obj2.denominator - obj2.numerator* obj1.denominator; denominator = obj1.denominator * obj2.denominator; }

void Fraction::multiply(Fraction obj1, Fraction obj2) { numerator = obj1.numerator * obj2.numerator; denominator = obj1.denominator * obj2.denominator;

}

void Fraction::divide(Fraction obj1, Fraction obj2) { numerator = obj1.numerator * obj2.denominator; denominator = obj1.denominator * obj2.numerator; } main.cpp

#include #include #include #include "fraction.h"

using namespace std;

int main(int argc, char** argv) { char choice;

//mkaing three fractions Fraction f1; Fraction f2; Fraction f3(3.14159); cout << "Please choose the mathematical operator from the following :" << endl; cout < cout << setw(10)<< "\tb) Subract" << endl; cout << setw(10)<< "\tc) multiply" << endl; cout << setw(10)<< "\td) divide" << endl; cout << setw(10)<< "\tq) or please choose to Quit " << endl; cin >> choice; while (choice != 'q') { try { cout << " please enter first fraction: " << endl; f1.input();

cout << " Please enter second fraction: " << endl; f2.input(); cout << " f1= "; f1.print(); cout << "f2= "; f2.print(); }

switch (choice) { case'a': { // fraction f3 is a calculated by adding f1 and f2 Fraction f3 = f1.Add(f2); cout << "You choose Addition, the fraction is: "; f3.print(); break; } case'b': { // fraction f3 is a calculated by subracting f1 and f2 Fraction f3 = f1.Subract(f2); cout << "You choose subraction, the fraction is: "; f3.print(); break; } case'c': { // fraction f3 is a calculated by multiplication f1 and f2 Fraction f3 = f1.multiply(f2); cout << "You choose multiplication, the fraction is: "; f3.print(); break; } case'd': { // fraction f3 is a calculated by Division f1 and f2 Fraction f3 = f1.divide(f2); cout << "you choose Division, the fraction is: "; f3.print(); break; } case'd=0': { cout << "Please enter valid denominator "; break; } } catch (const char n) { cout << "Operation error: " << n << " is not a valid operator. Start over." << endl; }

if (choice == 'Q' || choice == 'q') { exit(0); } else if (!cin >> choice) { cout << "Invalid choice! please enter a valid mathematical operator: " << endl; } }

cout << endl << endl; system("pause"); return 0; }

my question:

please fix my code using try and catch

Make sure to use exception handling in the event there is ever a divide by zero or any other error condition that would cause the program to terminate unexpectedl

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!