Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- class Rational{
- int a, b;
- int nod(int t, int s) const {
- while (s) {
- t %= s;
- std::swap(t, s);
- }
- return abs(t);
- }
- void rev_com_div() {
- if (b < 0) {
- a *= -1;
- b *= -1;
- }
- int s = nod(a, b);
- a /= s;
- b /= s;
- }
- public:
- Rational(int a = 0, int b = 1) : a(a), b(b)
- {
- rev_com_div();
- }
- Rational(Rational const& s) : a(s.a), b(s.b)
- {
- rev_com_div();
- }
- Rational & Add(Rational const& s) {
- a = a * s.b + b * s.a;
- b = b * s.b;
- rev_com_div();
- return *this;
- }
- Rational & Substract(Rational const& s) {
- a = a * s.b - b * s.a;
- b = b * s.b;
- rev_com_div();
- return *this;
- }
- Rational & Multiply(Rational const& s) {
- a *= s.a;
- b *= s.b;
- rev_com_div();
- return *this;
- }
- Rational & Divide(Rational const& s) {
- a *= s.b;
- b *= s.a;
- rev_com_div();
- return *this;
- }
- bool EqualTo(Rational const& s) const {
- return a == s.a && b == s.b;
- }
- int CompareTo(Rational const& s) const {
- int sum = a * s.b - s.a * b;
- return sum;
- }
- bool IsInteger() const {
- return b == 1;
- }
- std::string ToString() const {
- return std::to_string(a) + ":" + std::to_string(b);
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement