Acm 111 分数加减法

来源:互联网 发布:准确控盘源码指标公式 编辑:程序博客网 时间:2024/04/27 13:51

分数加减法

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

数据以EOF结束 
输入数据保证合法
输出
对于输入数据的每一行输出两个分数的运算结果。 
注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数
样例输入
1/8+3/81/4-1/21/3-1/3
样例输出
1/2-1/40
来源
水题比赛
上传者

hzyqazasdf


import java.util.Scanner;public class Main{public static void main(String[] args) {Scanner scan = new Scanner(System.in);boolean flag = true;int a,b,c,d;String sign;while(scan.hasNextLine()){char[] str = scan.next().toCharArray();a = str[0]-'0';b = str[2]-'0';c = str[4]-'0';d = str[6]-'0';sign = str[3]+"";if(b % d == 0 && b != d){c = c * (b / d);}else if(d % b == 0  && b != d){a = a * (d / b);b = d;}else{c = c * b;a = a * d;b = b * d;}if("+".equals(sign)){a = a + c;}if("-".equals(sign)){if(a < c){a = c - a;flag = false;}else{a = a - c;}}if( a == 0){System.out.println(0);}else if(a % b == 0){if(flag){System.out.println(a / b);}else{System.out.println("-"+a / b);}}else if(b % a == 0){b = b / a;if(flag){System.out.println(1+"/"+b);}else{System.out.println("-"+1+"/"+b);}}else{if(flag){System.out.println(a+"/"+b);}else{System.out.println("-"+a+"/"+b);}}}}}


0 0
原创粉丝点击