In: Computer Science
Note: This is a single file C++ project - No documentation is required on this assignment.
Write a Fraction class whose objects will represent Fractions.
Note: You should not simplify (reduce) fractions, you should not use "const," and all of your code should be in a single file. In this single file, the class declaration will come first, followed by the definitions of the class member functions, followed by the client program.
You must provide the following member functions:
Your class should have exactly two data members, one to represent the numerator of the Fraction being represented, and one to represent the denominator of the Fraction being represented.
Here's a hint for how you will set up your arithmetic operation functions: You need two Fractions. One is the parameter, one is the calling object. The function multiplies the calling object times the parameter and returns the result. In some ways it is similar to the comesBefore() function from the lesson. That function also needs two Fractions, and one is the calling object and one is the parameter.
When adding or subtracting Fractions, remember that you must first find the common denominator. The easy way to do this is to multiply the denominators together and use that product as the common denominator.
I am providing a client program for you below. You should copy and paste this and use it as your client program. The output that should be produced when the provided client program is run with your class is also given below, so that you can check your results.
I strongly suggest that you design your class incrementally. For example, you should first implement only the set function and the output function, and then test what you have so far. Once this code has been thoroughly debugged, you should add additional member functions, testing each one thoroughly as it is added. You might do this by creating your own client program to test the code at each stage; however, it would probably be better to use the provided client program and comment out code that relates to member functions that you have not yet implemented.
As you can see from the sample output given below, you are not required to reduce Fractions or change improper Fractions into mixed numbers for printing. Just print it as an improper Fraction. You are also not required to deal with negative numbers, either in the numerator or the denominator.
Here is the client program.
#include <iostream> using namespace std; int main() { Fraction f1; Fraction f2; Fraction result; f1.set(9, 8); f2.set(2, 3); cout<<"\nArithmetic operations with fraction objects stored in the results class object\n"; cout<<"------------------------------------------------------------------------------\n\n"; cout << "The product of "; f1.print(); cout << " and "; f2.print(); cout << " is "; result = f1.multipliedBy(f2); result.print(); cout << endl; cout << "The quotient of "; f1.print(); cout << " and "; f2.print(); cout << " is "; result = f1.dividedBy(f2); result.print(); cout << endl; cout << "The sum of "; f1.print(); cout << " and "; f2.print(); cout << " is "; result = f1.addedTo(f2); result.print(); cout << endl; cout << "The difference of "; f1.print(); cout << " and "; f2.print(); cout << " is "; result = f1.subtract(f2); result.print(); cout << endl; if (f1.isEqualTo(f2)){ cout << "The two Fractions are equal." << endl; } else { cout << "The two Fractions are not equal." << endl; } cout<<"\n---------------------------------------------------------\n"; cout<<"\nFraction class implementation test now successfully concluded\n"; // system ("PAUSE"); return 0; }
This client should produce the output shown here:
C++ CLASS SINGLE-FILE PROJECT Client.cpp - testing a Fraction class implementation ---------------------------------------------------- Arithmetic operations with Fraction objects stored in the result class object ------------------------------------------------------------------------------ The product of 9/8 and 2/3 is 18/24 The quotient of 9/8 and 2/3 is 27/16 The sum of 9/8 and 2/3 is 43/24 The difference of 9/8 and 2/3 is 11/24 The two Fractions are not equal. --------------------------------------------------------- Fraction class implementation test now successfully concluded Process returned 0 (0x0) execution time : 10.546 s Press any key to continue.
You may not change the client program in any way. Changing the client program will result in a grade of 0 on the project.
Code
#include<iostream>
using namespace std;
class Fraction
{
private:
int numerator;
int denominator;
public:
void set(int, int);
Fraction multipliedBy(const Fraction &);
Fraction dividedBy(const Fraction &);
Fraction addedTo(const Fraction &);
Fraction subtract(const Fraction &);
bool isEqualTo(const Fraction &);
void print();
};
void Fraction::set(int n, int d)
{
numerator = n;
denominator = d;
}
Fraction Fraction::multipliedBy(const Fraction & other)
{
int n, d;
n = numerator * other.numerator;
d = denominator * other.denominator;
Fraction r;
r.set(n, d);
return r;
}
Fraction Fraction::dividedBy(const Fraction &other)
{
int n, d;
n = numerator * other.denominator;
d = denominator * other.numerator;
Fraction r;
r.set(n, d);
return r;
}
Fraction Fraction::addedTo(const Fraction &other)
{
int n, d;
n = numerator *
other.denominator+denominator*other.numerator;
d = denominator * other.denominator;
Fraction r;
r.set(n, d);
return r;
}
Fraction Fraction::subtract(const Fraction &other)
{
int n, d;
n = numerator * other.denominator - denominator *
other.numerator;
d = denominator * other.denominator;
Fraction r;
r.set(n, d);
return r;
}
bool Fraction::isEqualTo(const Fraction &other)
{
return numerator * other.denominator ==
other.numerator*denominator;
}
void Fraction::print()
{
cout << numerator << "/" <<
denominator;
}
int main()
{
Fraction f1;
Fraction f2;
Fraction result;
f1.set(9, 8);
f2.set(2, 3);
cout << "\nArithmetic operations with
fraction objects stored in the results class object\n";
cout <<
"------------------------------------------------------------------------------\n\n";
cout << "The product of ";
f1.print();
cout << " and ";
f2.print();
cout << " is ";
result = f1.multipliedBy(f2);
result.print();
cout << endl;
cout << "The quotient of ";
f1.print();
cout << " and ";
f2.print();
cout << " is ";
result = f1.dividedBy(f2);
result.print();
cout << endl;
cout << "The sum of ";
f1.print();
cout << " and ";
f2.print();
cout << " is ";
result = f1.addedTo(f2);
result.print();
cout << endl;
cout << "The difference of ";
f1.print();
cout << " and ";
f2.print();
cout << " is ";
result = f1.subtract(f2);
result.print();
cout << endl;
if (f1.isEqualTo(f2)) {
cout << "The two Fractions
are equal." << endl;
}
else {
cout << "The two Fractions
are not equal." << endl;
}
cout <<
"\n---------------------------------------------------------\n";
cout << "\nFraction class implementation test
now successfully concluded\n";
system ("PAUSE");
return 0;
}
output
If you have any query regarding the code please ask me in the comment i am here for help you. Please do not direct thumbs down just ask if you have any query. And if you like my work then please appreciates with up vote. Thank You.