本题要求编写程序,计算两个有理数的和。
输入格式:
输入在一行中按照a1/b1 a2/b2的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。
输出格式:
在一行中按照a/b的格式输出两个有理数的和。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。
输入样例1:
1/3 1/6
输出样例1:
1/2
输入样例2:
4/3 2/3
输出样例2:
2
解答程序:
#include<cstdio>
#include<iostream>
using namespace std;
struct fraction
{
int a;
int b;
};
int function(int i,int j)
{
int m;
while(1)
{
m=i%j;
if(m==0)
break;
i=j;
j=m;
}
return j;
}
int main()
{
struct fraction f1,f2,f3;
int s;
scanf("%d/%d %d/%d",&f1.a,&f1.b,&f2.a,&f2.b);
f3.a=f1.a*f2.b+f2.a*f1.b;
f3.b=f1.b*f2.b;
s=function(f3.a,f3.b);
f3.a=f3.a/s;
f3.b=f3.b/s;
if(f3.b==1)
cout<<f3.a<<endl;
else
printf("%d/%d",f3.a,f3.b);
system("pause");
return 0;
}