(好像还有蛮多缺陷的,有些情况没考虑到害(。・∀・)ノ゙ 有空再看看8
(反正大概思路差不多就酱紫······(●'◡'●)
代码实现:
#include <iostream>
using namespace std;
class fens
{
int p, s; //分母,分子
public:
fens(int _s=0, int _p=1)
{
int x = gongyue(_s,_p);
s = _s/x;
p = _p/x;
}
int gongyue(int a, int b) //求最大公约数
{
int c = b;
while(a%b!=0)
{
c = a%b;
a = b;
b = c;
}
return c;
}
fens operator* (const fens &f1);
fens operator/ (const fens &f1);
fens operator+ (const fens &f1);
fens operator- (const fens &f1);
void show()
{
cout << "(" << s << "," << p << ")" << endl;
}
};
fens fens::operator* (const fens &f1)
{
return fens(f1.s*s , f1.p*p);
}
fens fens::operator/ (const fens &f1)
{
return fens(f1.p * s , f1.s * p);
}
fens fens::operator+ (const fens &f1)
{
return fens( (f1.s*p + s*f1.p), (f1.p * p));
}
fens fens::operator- (const fens &f1)
{
return fens(f1.s*p - s*f1.p , f1.p * p);
}
int main()
{
fens f1(1,2), f2(1,3), f3;
f3 = f1 + f2;
cout << "f1 + f2 = ";
f3.show();
f3 = f1 - f2;
cout << "f1 - f2 = " ;
f3.show();
f3 = f1 * f2;
cout << "f1 * f2 = ";
f3.show();
f3 = f1 / f2;
cout << "f1 / f2 = ";
f3.show();
return 0;
}