Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Rational {
- private:
- int numerator;
- int denominator;
- public:
- Rational() : numerator(0), denominator(1) {};
- Rational(int numerator_value, int denominator_value) {
- if(numerator_value*denominator_value > 0){
- numerator_value = abs(numerator_value);
- }
- else{
- numerator_value = -1*abs(numerator_value);
- }
- denominator_value = abs(denominator_value);
- if (numerator_value == 0){
- numerator = 0;
- denominator = 1;
- }
- else{
- int gcd_value = gcd(numerator_value, denominator_value);
- numerator = numerator_value/gcd_value;
- denominator = denominator_value/gcd_value;
- };
- }
- Rational operator+( const Rational& rhs){
- int new_numerator = 0;
- int new_denominator = denominator;
- if(denominator != rhs.Denominator()) {
- new_numerator = numerator * rhs.Denominator() + rhs.Numerator() * denominator;
- new_denominator = rhs.Denominator() * denominator;
- }
- else {
- new_numerator = numerator + rhs.Numerator();
- }
- return Rational(new_numerator, new_denominator);
- }
- Rational operator-( const Rational& rhs) const{
- int new_numerator = 0;
- int new_denominator = denominator;
- if(denominator != rhs.Denominator()) {
- new_numerator = numerator * rhs.Denominator() - rhs.Numerator() * denominator;
- new_denominator = rhs.Denominator() * denominator;
- }
- else {
- new_numerator = numerator + rhs.Numerator();
- }
- return Rational(new_numerator, new_denominator);
- }
- bool operator==( const Rational& rhs){
- return (numerator == rhs.Numerator() && denominator == rhs.Denominator());
- }
- int Numerator() const{
- return numerator;
- }
- int Denominator() const{
- return denominator;
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement