Advertisement
Guest User

Untitled

a guest
Apr 18th, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.26 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement