定义分数结构体Per,重载Per相加符号,相加时化简。
struct Per
{
int son, mom;
};
int gcd(int a, int b){
int r, ok = 1, out;
while(ok){
r = a % b;
if(r == 0){
ok = 0;
out = b;
} else {
a = b;
b = r;
}
}
return out;
}//最大公约数
int hj(int a, int b, int i){
a = a / gcd(a, b);
b = b / gcd(a, b);
if(i) return b;
else return a;
}//分子分母化简
Per operator + (const Per& a, const Per& b){
int son = a.son * b.mom + a.mom * b.son;
int mom = a.mom * b.mom;
return Per(hj(son, mom, 0), hj(son, mom, 1));
}
ostream& operator << (ostream& out, const Per& p){
out << p.son << "/" << p.mom;
return out;
}
报错 no matching function for call to 'Per::Per(int, int)'
######查阅信息竞赛教材,发现刘汝佳在使用Point结构体时可以直接使用Point(int, int),所以没有头绪