编程要求
实现两个有理数的相加并返回结果且返回的结果必须是最简分数。
测试输入:-1/2 5/6
预期输出:1/3
参考代码
#include <iostream>
using namespace std;
struct rationalNumber{
int fenzi; // 分子
int fenmu; // 分母
};
// 函数rnAdd:两个有理数相加
// 参数:x,y-两个有理数
// 返回值:x+y的最简分数形式
rationalNumber rnAdd(rationalNumber x, rationalNumber y);
int main()
{
char c;
rationalNumber x, y, z;
// 输入两个有理数
cin >> x.fenzi >> c >> x.fenmu;
cin >> y.fenzi >> c >> y.fenmu;
z = rnAdd(x,y); // 有理数相加
// 输出相加的结果
if(z.fenmu == 1)
cout << z.fenzi << endl;
else
cout << z.fenzi << "/" << z.fenmu << endl;
return 0;
}
rationalNumber rnAdd(rationalNumber x, rationalNumber y)
{
//有理数加法
rationalNumber m;
m.fenmu = x.fenmu * y.fenmu;
m.fenzi = x.fenzi * y.fenmu + y.fenzi * x.fenmu;
//化简
rationalNumber n = m;
int r;
while(m.fenmu != 0){
r = m.fenzi % m.fenmu;
m.fenzi = m.fenmu;
m.fenmu = r;
}
if(m.fenzi<0){
m.fenzi = -m.fenzi;
}
n.fenzi /= m.fenzi;
n.fenmu /= m.fenzi;
return n;
}