delix777

Спринт 4. Список инициализации конструктора.

Jan 26th, 2024 (edited)
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <numeric>
  2.  
  3. using namespace std;
  4.  
  5. class Rational {
  6. public:
  7.     Rational() = default;
  8.  
  9.     Rational(int numerator)
  10.    
  11.         :numerator_(numerator)
  12.     {
  13.         denominator_ = 1;
  14.     }
  15.  
  16.     Rational(int numerator, int denominator)
  17.    
  18.         :numerator_(numerator), denominator_(denominator)
  19.    
  20.     {
  21.         Normalize();
  22.     }
  23.  
  24.     int Numerator() const {
  25.         return numerator_;
  26.     }
  27.  
  28.     int Denominator() const {
  29.         return denominator_;
  30.     }
  31.  
  32. private:
  33.     void Normalize() {
  34.         if (denominator_ < 0) {
  35.             numerator_ = -numerator_;
  36.             denominator_ = -denominator_;
  37.         }
  38.         const int divisor = gcd(numerator_, denominator_);
  39.         numerator_ /= divisor;
  40.         denominator_ /= divisor;
  41.     }
  42.  
  43.     int numerator_ = 0;
  44.     int denominator_ = 1;
  45. };
Add Comment
Please, Sign In to add comment