In: Computer Science
Write a class named Rat (to simulate rational or fraction number) such that it works as in the main below.
int main()
{
Rat a(3, 4), b(1, 2);
a.print(); // output: 3/4
b.print(); // output: 1/2
Rat c = a.add(b);
c.print(); // output: 5/4
// Hint: 3/4 + 1/2 = 6/8 + 4/8 = 10/8 = 5/4
Rat d = a.multiply(b);
d.print(); // output: 3/8
// Hint: 3/4 x 1/2 = 3/8
return 0;
}
C++ code:
#include <bits/stdc++.h>
using namespace std;
// Rat class
class Rat{
public:
int numerator;
int denominator;
// Constructor
Rat(int x, int y){
numerator = x;
denominator = y;
}
// print the fraction
void print(){
cout << numerator << "/" << denominator << endl;
}
// add two fractional numbers
Rat add(Rat x){
int num = this->numerator * x.denominator + this->denominator * x.numerator;
int den = this->denominator * x.denominator;
int gcd = __gcd(num, den);
num /= gcd;
den /= gcd;
Rat y(num, den);
return y;
}
// multiply two fractional numbers
Rat multiply(Rat x){
int num = this->numerator * x.numerator;
int den = this->denominator * x.denominator;
int gcd = __gcd(num, den);
num /= gcd;
den /= gcd;
Rat y(num, den);
return y;
}
};
// Main function
int main(){
Rat a(3, 4), b(1, 2);
a.print(); // output: 3/4
b.print(); // output: 1/2
Rat c = a.add(b);
c.print(); // output: 5/4
Rat d = a.multiply(b);
d.print(); // output: 3/8
return 0;
}
Please refer to the following pictures for the code:
Execution of the above code: