2

このコードを見てください:

#include <iostream>
using namespace std;

class Ratio
{
    public:
        Ratio(int a=0, int b=1) : num(a), den(b) {}
        Ratio& operator/=(const Ratio&);
        void print() {cout << num << "/" << den << endl;}
    private:
        int num, den;
};


Ratio& Ratio::operator/=(const Ratio& r)
{
    num*=r.den;
    den*=r.num;
    return *this;
}

int main()
{
    Ratio x(1,2), y(2,5);
    y/=x;
    y.print();
}

このコードを実行した後、(y) は 5/4 になるはずです。私はそれを何度も手で計算しました! しかし、印刷後の出力 (y) では、4/5 と表示されます。それはあるべきではありませんによって反転されます !

私のコードのどこに問題がありますか? 本当に何度も何度もチェックしましたが、問題ないようです!宿題です:)

4

2 に答える 2

6

どのようにして 5/4 にすべきだと判断したのですか? (2/5) / (1/2) = 4/5 となり、正しい結果です。5/4 を期待しているときに、代わりに x/=y を計算している可能性があります。

于 2012-04-11T08:21:19.207 に答える
2

y/=xy = y/xどちらが2/5 / 1/2どちらが2/5 x 2/1=であるかと同じです4/5

于 2012-04-11T08:22:25.633 に答える