Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class Rational {
- public:
- Rational(int numerator, int denominator) {
- numerator_ = numerator;
- denominator_ = denominator;
- Reduction();
- }
- void print() {
- cout << numerator_ << '/' << denominator_ << endl;
- }
- void addition(const Rational& other) {
- numerator_ = numerator_ * other.denominator_ + other.numerator_ * denominator_;
- denominator_ = denominator_ * other.denominator_;
- Reduction();
- }
- void subtraction(const Rational& other) {
- numerator_ = numerator_ * other.denominator_ - other.numerator_ * denominator_;
- denominator_ = denominator_ * other.denominator_;
- Reduction();
- }
- void multiplication(const Rational& other) {
- numerator_ *= other.numerator_;
- denominator_ *= other.denominator_;
- Reduction();
- }
- void division(const Rational& other) {
- numerator_ *= other.denominator_;
- denominator_ *= other.numerator_;
- Reduction();
- }
- private:
- int numerator_;
- int denominator_;
- void Reduction() { // сокращение дроби
- if (denominator_ < 0) {
- numerator_ *= -1;
- denominator_ *= -1;
- }
- int x = numerator_ < 0 ? -numerator_ : numerator_;
- int y = denominator_;
- while (x != y) {
- if (x > y) {
- x -= y;
- }
- else {
- y -= x;
- }
- }
- numerator_ /= x;
- denominator_ /= x;
- }
- };
- int main() {
- Rational r1(1, 2);
- Rational r2(3, 4);
- r1.print();
- r2.print();
- r1.addition(r2);
- r1.print();
- r1.subtraction(r2);
- r1.print();
- r1.multiplication(r2);
- r1.print();
- r1.division(r2);
- r1.print();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement