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