分数を短くする必要があります: 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;}
}
それで、私を助けてもらえますか?
分子と分母の両方を2つの数値のGCDで割る必要があります。
GCDintを計算する
gcdr ( int a, int b )
{
if ( a==0 ) return b;
return gcdr ( b%a, a );
}
このような分数は、分子と分母の両方を 2 つの最大公約数で割ることによって単純化できます。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;
テストされていないコード。