Метод разницы двух обыкновенных дробей С++
Всем привет Мне нужна помощь с моим методом Вот код:
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. А цикл крашиться.Может кто-то помочь как это исправить?