1. 程式人生 > >SDUT-3849 分數四則運算

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();
}
}