题目描述
从键盘读入一个分数算式,为 22 个分数做加法或者减法,请输出分数算式的结果,结果也用分数表达,且约分到最简形式。(请注意:做减法可能得到负的分数,如果是负数要输出负号 -
,如 1/15-4/15
结果为 -1/5
)(5.1.76)
输入
分数表达式;分数表达式中,每个分数的分子和分母都是正整数(不超过 10001000 ),两个分数中的运算符,可能是加号,也可能是减号,且分数表达式不含空格。
输出
分数表达式计算的结果。
样例
输入
1/12+5/12
输出
1/2
输入
1/2+1/2
输出
1
输入
1/2-1/2
输出
0
说明
注意考虑特殊情况,如:1/2+1/2=1
,1/2-1/2=0
,这些情况下结果不需要表现为分数形式。
来源
字符串
#include<bits/stdc++.h>
using namespace std;
void sum(int a,int b,int c,int d){
int t=b,t1=a+c;
for(int i=max(t,t1);i>1;i--){
if(t%i==0&&t1%i==0){
t/=i;t1/=i;
}
}
if(t==1){
cout<<t1;
}
else {
cout<<t1<<"/"<<t;
}
}
void difference(int a,int b,int c,int d){
int t=b,t1=a-c;
for(int i=max(t,t1);i>1;i--){
if(t%i==0&&t1%i==0){
t/=i;t1/=i;
}
}
if(t==1){
cout<<t1;
}
else {
cout<<t1<<"/"<<t;
}
}
int main(){
int a,b,c,d;
char e,f,g;
cin>>a>>e>>b>>f>>c>>g>>d;
if(f=='+'){
sum(a,b,c,d);
}
else{
difference(a,b,c,d);
}
return 0;
}