だから私はOOクラスの混合数字クラスを書いています。すべての比較とブール オペランド (とりわけ) をオーバーロードする必要がありますが、'<' と '>' オペランドについて考える方法に問題があります。これは、いくつかのコンテキストの「==」および「!=」オペランド関数です。
編集:また、誰かが足し算/引き算の方法に関するヒントを持っていれば、私は感謝しています.
bool operator ==(Mixed& mn1, Mixed& mn2){
mn1.ToFraction();
mn2.ToFraction();
mn1.Simplify();
mn2.Simplify();
if(mn1.numerator == mn2.numerator && mn1.denominator == mn2.denominator)
return true;
else
return false;
}
と
bool operator !=( Mixed& mn1, Mixed& mn2){
mn1.ToFraction();
mn2.ToFraction();
mn1.Simplify();
mn2.Simplify();
if(mn1.numerator == mn2.numerator && mn1.denominator == mn2.denominator)
return false;
else
return true;
}
誰かが何らかのガイダンスを提供できれば、私は感謝しています。ああ、比較のためにそれらを小数に変換することはできません。
編集:これが私のヘッダーです。
#include <iostream>
using namespace std;
class Mixed
{
public:
Mixed(int integer, int numerator = 0, int denominator = 1);
Mixed(int integer = 0);
double Evaluate();
void ToFraction();
void Simplify();
friend istream& operator >>(istream& in, Mixed& mn);
friend ostream& operator <<(ostream& out, Mixed& mn);
friend bool operator ==( Mixed& mn1, Mixed& mn2);
friend bool operator !=( Mixed& mn1, Mixed& mn2);
friend bool operator >( Mixed& mn1, Mixed& mn2);
friend bool operator <( Mixed& mn1, Mixed& mn2);
friend bool operator <=( Mixed& mn1, Mixed& mn2);
friend bool operator >=( Mixed& mn1, Mixed& mn2);
friend const Mixed operator +( Mixed& mn1, Mixed& mn2);
friend const Mixed operator -( Mixed& mn1, Mixed& mn2);
friend const Mixed operator *( Mixed& mn1, Mixed& mn2);
friend const Mixed operator /( Mixed& mn1, Mixed& mn2);
private:
int GCD(int a, int b);
int integer, numerator, denominator;
};