Advertisement
Alaricy

начал рациональные дроби

Dec 2nd, 2022 (edited)
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.81 KB | None | 0 0
  1. #include <algorithm>
  2. #include <cmath>
  3. #include <iostream>
  4. #include <map>
  5. #include <set>
  6. #include <string>
  7. #include <utility>
  8. #include <vector>
  9. #include <numeric>
  10.  
  11. using namespace std;
  12. /*int gcd(int n, int m) {
  13.     return 2;
  14. }*/
  15.  
  16.  
  17. class Rational {
  18. public:
  19.     int Numerator() const {
  20.         return numerator_;
  21.     }
  22.  
  23.     int Denominator() const {
  24.         return denominator_;
  25.     }
  26.     Rational() {
  27.         Numerator();
  28.         Denominator();    
  29.     }
  30.     Rational(int i) {
  31.         SetNum(i);
  32.         SetDen(1);
  33.     }
  34.     Rational(int i, int j) {
  35.         int c=1;
  36.         if (i!=0)
  37.         {
  38.         c = gcd(abs(i),abs(j));
  39.         }
  40.         if (i*j<0) {
  41.             i=-abs(i);
  42.             j=abs(j);
  43.             }
  44.         if (i*j>0){
  45.             i=abs(i);
  46.             j=abs(j);            
  47.         }
  48.      //   cout<<"***"<<i<<"***"<<j<<"***"<<c<<"***"<<endl;
  49.         SetNum(i/c);
  50.         SetDen(j/c);
  51.     }
  52.  
  53. private:
  54.     int numerator_ = 0;
  55.     int denominator_ = 1;
  56.  
  57.     void SetNum(int num) {
  58.         numerator_ = num;
  59.     }
  60.     void SetDen(int den) {
  61.         denominator_ = den;
  62.     }
  63.  
  64. };
  65. Rational Add(Rational r1, Rational r2) {
  66.     int numerator = r1.Numerator() * r2.Denominator() + r2.Numerator() * r1.Denominator();
  67.     int denominator = r1.Denominator() * r2.Denominator();
  68.     // Создаём и возвращаем дробь с заданным числителем и знаменателем
  69.     return Rational{ numerator, denominator };
  70. }
  71.  
  72. int main() {
  73.     Rational r1;
  74.     Rational r2(8);
  75.     Rational r3(-8);
  76.     Rational r4(1,2);
  77.     Rational r5(-1,2);
  78.     Rational r6(10,-20);
  79.     Rational r7(-1,-2);
  80.     Rational r8(10,15);
  81.     Rational r9(0,-5);
  82.     cout << r1.Numerator() << "/" << r1.Denominator()<<endl;
  83.     cout << r2.Numerator() << "/" << r2.Denominator()<<endl;
  84.     cout << r3.Numerator() << "/" << r3.Denominator()<<endl;
  85.     cout << r4.Numerator() << "/" << r4.Denominator()<<endl;
  86.     cout << r5.Numerator() << "/" << r5.Denominator()<<endl;
  87.     cout << r6.Numerator() << "/" << r6.Denominator()<<endl;
  88.     cout << r7.Numerator() << "/" << r7.Denominator()<<endl;
  89.     cout << r8.Numerator() << "/" << r8.Denominator()<<endl;
  90.     cout << r9.Numerator() << "/" << r9.Denominator()<<endl;
  91.    
  92.     /* Rational zero;     // Дробь 0/1 = 0
  93.     const Rational seven(7); // Дробь 7/1 = 7
  94.     const Rational one_third(1, 3); // Дробь 1/3
  95.     vector<Rational> numbers;
  96.     numbers.push_back(Rational{ 7, 8 });
  97.     // Следующие 2 строки эквивалентны - добавляют в numbers дробь 3/1
  98.     numbers.push_back(Rational{ 3 });
  99.     numbers.push_back(3);
  100.     Rational sum = Add(Rational{ -1,6 }, one_third);
  101.     // Выведет 1/2
  102.     cout << sum.Numerator() << "/" << sum.Denominator();
  103.  
  104.     */
  105.    
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement