Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <string>
- #include <vector>
- #include <iostream>
- #include <numeric>
- #include <cmath>
- using namespace std;
- class Rational {
- public:
- Rational() = default;
- //{
- //numerator_ = 0;
- //denominator_ = 1;
- //};
- Rational(int num)
- {
- numerator_ = num;
- }
- Rational(int num1, int num2)
- {
- if ( num2 != 0 )
- {
- numerator_ = num1;
- denominator_ = num2;
- }
- }
- int Numerator() const {
- return numerator_;
- }
- int Denominator() const {
- return denominator_;
- }
- private:
- int numerator_ = 0;
- int denominator_ = 1;
- };
- Rational Add(Rational r1, Rational r2) {
- int numerator = r1.Numerator() * r2.Denominator() + r2.Numerator() * r1.Denominator();
- int denominator = r1.Denominator() * r2.Denominator();
- /* if (denominator < 0)
- {
- numerator *= (-1);
- denominator *= (-1);
- }*/
- if ( denominator < 0 )
- {
- numerator = abs(numerator);
- denominator = abs(denominator);
- }
- int numerator_temp = numerator / gcd(numerator, denominator);
- denominator = denominator / gcd(numerator, denominator);
- numerator = numerator_temp;
- // Создаём и возвращаем дробь с заданным числителем и знаменателем
- return Rational{numerator, denominator};
- }
- int main() {
- Rational zero; // Дробь 0/1 = 0
- const Rational seven(7); // Дробь 7/1 = 7
- const Rational one_third(1, 3); // Дробь 1/3
- vector<Rational> numbers;
- numbers.push_back(Rational{7, 8});
- // Следующие 2 строки эквивалентны - добавляют в numbers дробь 3/1
- numbers.push_back(Rational{3});
- numbers.push_back(3);
- Rational sum = Add(Rational{1,6}, one_third);
- // Выведет 1/2
- cout << sum.Numerator() << "/" << sum.Denominator();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement