A-A+

分数加减法

2012年07月28日 语言入门 暂无评论 阅读 91 次

分数加减法

时间限制:3000 ms  |  内存限制:65535 KB
难度:2
描述
编写一个C程序,实现两个分数的加减法
输入
输入包含多行数据
每行数据是一个字符串,格式是"a/boc/d"。
其中a, b, c, d是一个0-9的整数。o是运算符"+"或者"-"。

数据以EOF结束
输入数据保证合法

输出
对于输入数据的每一行输出两个分数的运算结果。
注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数
样例输入
1/8+3/8
1/4-1/2
1/3-1/3
样例输出
1/2
-1/4
0

水题~~~
[cpp]
#include "stdio.h"
int main()
{
int a,b,c,d,i;
char f2;
int sum1,sum2,sum3,max,max2;
while((scanf("%d/%d%c%d/%d",&a,&b,&f2,&c,&d)!=EOF))
{
if(a==c&&b==d&&f2=='-') {printf("0n");continue;
sum1=a*d+b*c;
sum3=a*d>b*c?a*d-b*c:b*c-a*d;
sum2=b*d;
for(i=1;i<=sum2;i++) { if(sum1%i==0&&sum2%i==0) max=i; if(sum3%i==0&&sum2%i==0) max2=i; } if(f2=='+') if(sum2/max==1) printf("%dn",sum1/max); else printf("%d/%dn",sum1/max,sum2/max); else if(a*d>b*c)
if(sum2/max2==1) printf("%dn",sum3/max2);
else printf("%d/%dn",sum3/max2,sum2/max2);
else
if(sum2/max2==1) printf("-%dn",sum3/max2);
else printf("-%d/%dn",sum3/max2,sum2/max2);
}
return 0;
}
[/cpp]

标签:

给我留言

Copyright © C/C++程序员之家 保留所有权利.   Theme  Ality 浙ICP备15011757号-3

用户登录