Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- //рекурсивная функция вычисление Наибольшего Общего Делителя
- int gcd(int a, int b) {
- if (a == 0)
- return b;
- if (b == 0)
- return a;
- if (a == b)
- return a;
- if (a > b)
- return gcd(a - b, b);
- return gcd(a, b - a);
- }
- class Fraction {
- public:
- int numerator;
- int denominator;
- Fraction(int a, int b){
- numerator = a;
- denominator = b;
- }
- //Создаём новую дробь, равную сумме 2ух других (по школьным правилам)
- Fraction operator+(Fraction b) {
- int commonDenom = denominator * b.denominator / gcd(denominator, b.denominator);
- int newNum = numerator * commonDenom / denominator + b.numerator * commonDenom / b.denominator;
- return Fraction(newNum, commonDenom);
- }
- void print(){
- cout << numerator << "/" << denominator;
- }
- };
- int main() {
- //Создаём дробь а = 2/5
- Fraction a(2, 5);
- Fraction b(1, 5);
- a.print();
- cout << endl;
- b.print();
- Fraction c = a + b;
- cout << endl;
- c.print();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement