SHARE
TWEET

Untitled

a guest Apr 18th, 2019 70 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5.  
  6. //рекурсивная функция вычисление Наибольшего Общего Делителя
  7. int gcd(int a, int b) {
  8.     if (a == 0)
  9.         return b;
  10.     if (b == 0)
  11.         return a;
  12.  
  13.     if (a == b)
  14.         return a;
  15.  
  16.     if (a > b)
  17.         return gcd(a - b, b);
  18.     return gcd(a, b - a);
  19. }
  20.  
  21. class Fraction {
  22. public:
  23.     int numerator;
  24.     int denominator;
  25.  
  26.     Fraction(int a, int b){
  27.         numerator = a;
  28.         denominator = b;
  29.     }
  30.  
  31.     //Создаём новую дробь, равную сумме 2ух других (по школьным правилам)
  32.     Fraction operator+(Fraction b) {
  33.         int commonDenom = denominator * b.denominator / gcd(denominator, b.denominator);
  34.         int newNum = numerator * commonDenom / denominator + b.numerator * commonDenom / b.denominator;
  35.         return Fraction(newNum, commonDenom);
  36.     }
  37.  
  38.     void print(){
  39.         cout << numerator << "/" << denominator;
  40.     }
  41.  
  42. };
  43.  
  44. int main() {
  45.     //Создаём дробь а = 2/5
  46.     Fraction a(2, 5);
  47.    
  48.     Fraction b(1, 5);
  49.  
  50.     a.print();
  51.     cout << endl;
  52.     b.print();
  53.  
  54.    
  55.     Fraction c = a + b;
  56.     cout << endl;
  57.     c.print();
  58.  
  59.     return 0;
  60. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top