Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- struct Rational {
- Rational(int numerator = 0, int denominator = 1) : numerator_(numerator), denominator_(denominator) {};
- void add(Rational rational) {
- numerator_ = numerator_ * rational.denominator_ + rational.numerator_ * denominator_;
- denominator_ *= rational.denominator_;
- }
- void sub(Rational rational) {
- numerator_ = numerator_ * rational.denominator_ - rational.numerator_ * denominator_;
- denominator_ *= rational.denominator_;
- }
- void mul(Rational rational) {
- numerator_ *= rational.numerator_;
- denominator_ *= rational.denominator_;
- }
- void div(Rational rational) {
- numerator_ *= rational.denominator_;
- denominator_ *= rational.numerator_;
- }
- void neg() {
- numerator_ = -numerator_;
- }
- void inv() {}
- double to_double() const {
- return numerator_ / (double)denominator_;
- }
- explicit operator bool() const
- {
- return numerator_;
- }
- Rational & operator += (Rational r)
- {
- this->add(r);
- return *this;
- }
- Rational & operator -= (Rational r)
- {
- this->sub(r);
- return *this;
- }
- Rational & operator *= (Rational r)
- {
- this->mul(r);
- return *this;
- }
- Rational & operator /= (Rational r)
- {
- this->div(r);
- return *this;
- }
- Rational operator - () const
- {
- return Rational(-this->numerator_, this->denominator_);
- }
- Rational operator + () const
- {
- return *this;
- }
- int & getNum() { return numerator_; }
- int & getDenom() { return denominator_; }
- int getNum() const { return numerator_; }
- int getDenom() const { return denominator_; }
- private:
- int numerator_;
- int denominator_;
- };
- Rational operator + (Rational r1, Rational const & r2)
- {
- return r1 += r2;
- }
- Rational operator - (Rational r1, Rational const & r2)
- {
- return r1 -= r2;
- }
- Rational operator * (Rational r1, Rational const & r2)
- {
- return r1 *= r2;
- }
- Rational operator / (Rational r1, Rational const & r2)
- {
- return r1 /= r2;
- }
- bool operator == (Rational const & r1, Rational const & r2)
- {
- return !(r1 - r2);
- }
- bool operator < (Rational const & r1, Rational const & r2)
- {
- return ((r1.getNum() * r2.getDenom() - r2.getNum() * r1.getDenom()) < 0);
- }
- bool operator > (Rational const & r1, Rational const & r2)
- {
- return r2 < r1;
- }
- bool operator <= (Rational const & r1, Rational const & r2)
- {
- return !(r2 < r1);
- }
- bool operator >= (Rational const & r1, Rational const & r2)
- {
- return !(r1 < r2);
- }
- bool operator != (Rational const & r1, Rational const & r2)
- {
- return !(r1 == r2);
- }
- using namespace std;
- int main() {
- Rational r1(1, 1);
- Rational r2(2, 3);
- cout << (r1 < 1.5) << endl;
- //cout << (+r1).to_double() << endl;
- //cout << (-r1).to_double() << endl;
- //Rational r2(1, 3);
- //Rational r3(5);
- //r1.add(r2);
- //std::cout << r1.to_double() << std::endl;
- //r1.sub(r2);
- //std::cout << r1.to_double() << std::endl;
- //r1.neg();
- //std::cout << r1.to_double() << std::endl;
- //r3.mul(r1);
- //std::cout << r3.to_double() << std::endl;
- //r3.div(r2);
- //std::cout << r3.to_double() << std::endl;
- system("pause>nul");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement