Метод разницы двух обыкновенных дробей С++

Всем привет Мне нужна помощь с моим методом Вот код:

void difference(){
    int d,a,b;
    int resultnum = ((num1 * den2) - (num2 * den1));
    int resultden = (den1 * den2);
    
    a = resultnum, b = resultden;
    while(a > 0 && b > 0){
        if(a > b){
            a %= b;
        }
        else{
            b %= a; 
        }
        d = a + b;
    }
cout << num1 << "/" << den1 << " - " << num2 << "/" << den2 << " = " << resultnum / d << "/" << resultden / d;
}

Что он собственно делает,на вход он получает 4 числа num1,den1,num2,den2 Тоесть num1 - Числитель первой дроби, den1 - Знаменатель resultnum - числитель дроби полученной в результате разницы двух дробей resultden - знаменатель

Дальше мне надо сократить дроби,для этого ищу для числителя и знаменателя НОД, все работает вроде бы хорошо,но вот когда num1 == num2 и den1 == den2 цикл крашится.Тоесть когда числа разные все работает,но когда дроби одинаковые результат должен быть 0. А цикл крашиться.Может кто-то помочь как это исправить?


Ответы (0 шт):