题目描述
从键盘读入一个分数算式,为 2 个分数做加法或者减法,请输出分数算式的结果,结果也用分数表达,且约分到最简形式。(请注意:做减法可能得到负的分数,如果是负数要输出负号 -
,如 1/15-4/15
结果为 -1/5
)(5.1.76)
输入
分数表达式;分数表达式中,每个分数的分子和分母都是正整数(不超过 1000 ),两个分数中的运算符,可能是加号,也可能是减号,且分数表达式不含空格。
输出
分数表达式计算的结果。
样例:
输入
1/12+5/12
输出
1/2
输入
1/2+1/2
输出
1
输入
1/2-1/2
输出
0
代码如下:
#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b)
{
if(a%b==0)return b;
return gcd(b,a%b);
}
int main(){
int a,b,a1,b1,a2,b2;
char c;
scanf("%d/%d%c%d/%d",&a1,&b1,&c,&a2,&b2);
if(c=='-')a=a1*b2-a2*b1;
else a=a1*b2+a2*b1;
b=b1*b2;
int m=gcd(abs(a),b);
if(a==0)cout<<0;
else if(b/m==1)cout<<a/m;
else cout<<a/m<<"/"<<b/m;
return 0;
}