Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int NOD(int a, int b) {
- if (a < b) {
- swap(a, b);
- }
- while (a % b != 0) {
- a = a % b;
- swap(a, b);
- }
- return b;
- }
- class Rational {
- public:
- Rational(){
- p = 0;
- q = 1;
- }
- Rational(int numerator, int denominator):p(numerator), q(denominator){
- if ((p < 0 && q < 0) || q < 0) {
- p *= -1;
- q *= -1;
- }
- if (p == 0) {
- q = 1;
- }
- else {
- int t = NOD(p, q);
- if (t != 1) {
- p /= t;
- q /= t;
- }
- }
- }
- int Numerator() const {
- return p;
- }
- int Denominator() const {
- return q;
- }
- private:
- int p;
- int q;
- };
- /*
- bool operator==(const Rational& b, const Rational& a) {
- return (a.Denominator() == b.Denominator() && a.Numerator() == b.Numerator());
- }
- Rational operator+(const Rational& b, const Rational& a) {
- int t = a.Denominator() * b.Denominator();
- int q = t;
- int p = t / a.Denominator() * a.Numerator() + t / b.Denominator() * b.Numerator();
- Rational R(p, q);
- return R;
- }
- Rational operator-(const Rational& a, const Rational& b) {
- int t = a.Denominator() * b.Denominator();
- int q = t;
- int p = t / a.Denominator() * a.Numerator() - t / b.Denominator() * b.Numerator();
- Rational R(p, q);
- return R;
- }
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement