View difference between Paste ID: 4swXNchR and Sqf5KS5B
SHOW: | | - or go back to the newest paste.
1
#include <numeric>
2
3
using namespace std;
4
5
class Rational {
6
public:
7
    Rational() = default;
8
9
    Rational(int numerator) 
10
    
11
        :numerator_(numerator)
12
    {
13
        denominator_ = 1;
14
    }
15
16
    Rational(int numerator, int denominator) 
17
    
18
        :numerator_(numerator), denominator_(denominator)
19
    
20
    {
21
        Normalize();
22
    }
23
24
    int Numerator() const {
25
        return numerator_;
26
    }
27
28
    int Denominator() const {
29
        return denominator_;
30
    }
31
32
private:
33
    void Normalize() {
34
        if (denominator_ < 0) {
35
            numerator_ = -numerator_;
36
            denominator_ = -denominator_;
37
        }
38
        const int divisor = gcd(numerator_, denominator_);
39
        numerator_ /= divisor;
40
        denominator_ /= divisor;
41
    }
42
43
    int numerator_ = 0;
44
    int denominator_ = 1;
45
};