Мне нужно короткую дробь
4/5 * 3/4 = 12/20, но мне нужно коротко, поэтому ответ должен быть: 3/5.
Я знаю, что я должен использовать эту функцию:
int NWD(int m1,int m2){
int d;
while((m1!=0)&&(m2!=0)){
if(m1>=m2) m1=m1%m2;
else m2=m2%m1;
return d=m1+m2;}
}
Так ты можешь мне помочь?
Вы можете упростить такие дроби, разделив числитель и знаменатель на наибольший общий делитель двух. Распространенным методом для расчета GCD является Евклидов алгоритм.
вам нужно разделить числитель и знаменатель на GCD двух чисел.
Рассчитать GCD int
gcdr ( int a, int b )
{
if ( a==0 ) return b;
return gcdr ( b%a, a );
}
любезность: для фрагмента кода GCD
Это похоже на правильную версию вашей функции.
int NWD(int m1,int m2){
while((m1!=0)&&(m2!=0)){
if(m1>=m2) m1=m1%m2;
else m2=m2%m1;
}
return m1+m2;
}
int num = 12;
int den = 20;
int d = NWD(num,den);
cout << num/d << '/' << den/d;
Непроверенный код.