SDUT-3849 分数四则运算

Problem Description

编写程序,实现两个分数的加减法

Input

输入包含多行数据;

每行数据是一个字符串,格式是"a/boc/d",其中a, b, c, d为数字(每个数字保证为正数并且不存在正号)。o是运算符"+"或者"-","*","\"。

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

Output

直接输出结果,并且注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数形式。

Sample Input

1/100+3/100
1/4-1/2
1/3-1/3
1/2*2/1
1/2\1/2

Sample Output

1/25
-1/4
0
1
1
import java.util.Scanner;
public class Main {
	public static int gcd(int a, int b)
	{
		if(b == 0)return a;
		else return gcd(b, a % b);
	}
	public static void main(String args[]) {
		Scanner in = new Scanner(System.in);
		int a, b, c, d;
		String s;
		char x;
		while(in.hasNext())
		{
			s = in.next();
			int i;	
			a = b = c = d = 0;	
			char si[] = s.toCharArray();	
			for(i = 0; i < si.length; i++)		
			{		
				if(si[i] == '/')break;		
				a *= 10;	
				a += si[i] - '0';		
				}		
			for(i++; i < si.length; i++)	
			{		
				if(si[i] >= '0' && si[i] <= '9')	
				{			
					b *= 10;		
					b += si[i] - '0';		
					}		
				else break;		
				}	
			x = si[i];	
			for(i++; i < si.length; i++)	
			{		
				if(si[i] == '/')break;	
				c *= 10;		
				c += si[i] - '0';		
				}		
			for(i++; i < si.length; i++)		
			{		
				d *= 10;		
				d += si[i] - '0';	
				}
			int bi = b * d;
			int ai = 0;
			if(x == '+')
			{
				ai = a * d + c * b;
			}
			if(x == '-')
			{
				ai = a * d - c * b;
			}
			if(x == '*')
			{
				ai = a * c;
			}
			if(x == '\\')
			{
				ai = a * d;
				bi = b * c;
			}
			if(ai == 0)
			{
				System.out.println("0");
				continue;
			}
			if(ai < 0)
			{
				System.out.printf("-");
				ai = -ai;
			}
			int aa = gcd(ai, bi);
			ai = ai / aa;
			bi = bi / aa;
			if(bi == 1)
			{
				System.out.println(ai);
			}
			else
			{
				System.out.println(ai + "/" + bi);
			}
		}
       in.close();
}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值