Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class Rational {
- public:
- Rational() : numerator_(0), denominator_(1) {}
- explicit Rational(int value) : numerator_(value), denominator_(1) {}
- Rational(int numerator, int denominator) : numerator_(numerator), denominator_(denominator) {
- Reduction();
- }
- int Numerator() const {
- return numerator_;
- }
- int Denominator() const {
- return denominator_;
- }
- void Addition(const Rational& right) {
- numerator_ = numerator_ * right.denominator_ + right.numerator_ * denominator_;
- denominator_ *= right.denominator_;
- Reduction();
- }
- /* Аналогично:
- Subtraction
- Division
- Multiplication */
- private:
- void Reduction() {
- if (denominator_ < 0) {
- numerator_ = -numerator_;
- denominator_ = -denominator_;
- }
- int x = numerator_ < 0 ? -numerator_ : numerator_;
- int y = denominator_ < 0 ? -denominator_ : denominator_;
- while (x != y) {
- if (x > y) {
- x = x - y;
- }
- else {
- y = y - x;
- }
- }
- numerator_ /= x;
- denominator_ /= x;
- }
- int numerator_;
- int denominator_;
- };
- int main() {
- Rational r1(1, 2);
- Rational r2(3, 4);
- r1.Addition(r2);
- cout << r1.Numerator() << '/' << r1.Denominator() << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment