-2

分数を短くする必要があります: 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;}
    }

それで、私を助けてもらえますか?

4

3 に答える 3

2

分子と分母の両方を2つの数値のGCDで割る必要があります。

GCDintを計算する

gcdr ( int a, int b )
{
  if ( a==0 ) return b;
  return gcdr ( b%a, a );
}

礼儀:GCDコードスニペットの場合

于 2013-03-20T16:42:28.317 に答える
1

このような分数は、分子と分母の両方を 2 つの最大公約数で割ることによって単純化できます。GCD を計算する一般的な方法は、ユークリッド アルゴリズムです。

于 2013-03-20T16:40:21.813 に答える
0

これは、関数の正しいバージョンのようです。

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;

テストされていないコード。

于 2013-03-20T16:44:41.350 に答える