-4

私はC++で分数単純化を書いています。構造体の2つの値を比較して、どちらが大きいかを確認しようとしていますが、次のいずれも機能しません。

void simplify(struct Fraction* fraction) {
    if (fraction->numerator) > (fraction->denominator)
    {
        cout << "test";
    }
}

void simplify(struct Fraction* fraction) {
    if (fraction.numerator) > (fraction.denominator)
    {
        cout << "test";
    }
}

構造体:

struct Fraction {
    int numerator;
    int denominator;
};

エラー:

w2.cpp: In function void simplify(Fraction*):
w2.cpp:40:15: error: request for member numerator in fraction, which is of non-class type Fraction*
w2.cpp:40:26: error: expected primary-expression before > token
w2.cpp:40:38: error: request for member denominator in fraction, which is of non-class type Fraction*
w2.cpp:41:2: error: expected ; before { token

構造体内の値を比較するにはどうすればよいですか?

4

2 に答える 2

4

ポインタがあるので、それらを参照解除する必要があります。ブラケットの問題もありました:

void simplify(struct Fraction* fraction) {
    if (fraction->numerator > fraction->denominator)
    {
        cout << "test";
    }
}

代わりに参照を渡すことで、これらのポインターの参照解除の問題をすべて回避できます。また、不要なstructsを削除します:

void simplify(const Fraction& fraction) {
    if (fraction.numerator > fraction.denominator) {
        cout << "test";
    }
}
于 2013-01-17T23:47:18.057 に答える
2

かっこが足りませんでした。

void simplify(struct Fraction* fraction) {
    if ( (fraction->numerator) > (fraction->denominator) )
    {
        cout << "test";
    }
}
于 2013-01-17T23:47:00.750 に答える