#include<iostream>
using namespace std;
#include<Cmath>
int gcd(int m, int n)
{
int r;
if (m < n)
{
r = m;
m = n;
n = r;
}
while(r = m % n)
{
m=n;
n=r;
}
return n;
}
class RationalNumber
{
private:
int son;//分子
int moth;//分母
public:
RationalNumber()
{
int son = 0;
int moth = 1;
}//赋初值
RationalNumber(int s,int m)
{
int e=gcd(s, m);
son = s / e;
moth = m / e;
}
RationalNumber operator + (const RationalNumber &c);
RationalNumber operator - (const RationalNumber &c);
RationalNumber operator * (const RationalNumber &c);
RationalNumber operator / (const RationalNumber &c);
bool operator == (const RationalNumber &c);
bool operator < (const RationalNumber &c);
bool operator <= (const RationalNumber &c);
bool operator > (const RationalNumber &c);
bool operator >= (const RationalNumber &c);
bool operator != (const RationalNumber &c);
void display();
};
inline RationalNumber RationalNumber::operator + (const RationalNumber &c)
{
return RationalNumber(son * c.moth + moth * c.son,moth * c.moth);
}
inline RationalNumber RationalNumber::operator - (const RationalNumber &c)
{
return RationalNumber(son * c.moth - moth * c.son,moth * c.moth);
}
inline RationalNumber RationalNumber::operator * (const RationalNumber &c)
{
return RationalNumber(son * c.son, moth * c.moth);
}
inline RationalNumber RationalNumber::operator / (const RationalNumber &c)
{
return RationalNumber(son * c.moth,moth * c.son);
}
inline bool RationalNumber::operator == (const RationalNumber &c)
{
if(son * c.moth - moth * c.son,moth * c.moth == 0)
return true;
else
return false;
}
inline bool RationalNumber::operator < (const RationalNumber &c)
{
if(son * c.moth - moth * c.son,moth * c.moth < 0)
return true;
else
return false;
}
inline bool RationalNumber::operator <= (const RationalNumber &c)
{
if(son * c.moth - moth * c.son,moth * c.moth <= 0)
return true;
else
return false;
}
inline bool RationalNumber::operator > (const RationalNumber &c)
{
if(son * c.moth - moth * c.son,moth * c.moth > 0)
return true;
else
return false;
}
inline bool RationalNumber::operator >= (const RationalNumber &c)
{
if(son * c.moth - moth * c.son,moth * c.moth >= 0)
return true;
else
return false;
}
inline bool RationalNumber::operator != (const RationalNumber &c)
{
if(son * c.moth - moth * c.son,moth * c.moth != 0)
return true;
else
return false;
}
void RationalNumber::display()
{
cout << son << "/" << moth << endl;
}
int main()
{
RationalNumber c1(3,8),c2(7,16),c;
cout << "c1为:";
c1.display();
cout << "c2为:";
c2.display();
cout << "下面比较两个数大小:\n";
if (c1 > c2)
cout << " c1 > c2 " << endl;
if (c1 < c2)
cout << " c1 < c2 " << endl;
if (c1 == c2)
cout << " c1 == c2 " << endl;
if (c1 >= c2)
cout << "c1 >= C2" << endl;
if (c1 != c2)
cout << "c1 != c2" << endl;
cout << "下面计算两个数的加减乘除" << endl;
c = c1 + c2;
cout << " c1 + c2 = ";
c.display();
c = c1 - c2;
cout << " c1 - c2 = ";
c.display();
c = c1 * c2;
cout << " c1 * c2 = ";
c.display();
c = c1 / c2;
cout<<"c1 / c2 =";
c.display();
cout << endl;
return 0;
}