Problem Description
编写一个C程序,实现两个分数的加减法
Input
输入包含多行数据
每行数据是一个字符串,格式是”a/boc/d”。
其中a, b, c, d是一个0-9的整数。o是运算符”+”或者”-“。
数据以EOF结束
输入数据保证合法
Output
对于输入数据的每一行输出两个分数的运算结果。
注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数
Sample Input
1/8+3/8
1/4-1/2
1/3-1/3
Sample Output
1/2
-1/4
0
输出时重写toString方法:用System.out.println()输出一个对象的时候,java默认调用对象的toString()方法。一般你要覆盖这个方法,这样根据覆盖逻辑你就可以输出自己的对象。
import java.util.Scanner;
class CP {
int a;
int b;
public CP(int x, int y) {
a = x;
b = y;
}
public CP add(CP p) {
int c;
int d;
c = a * p.b + b * p.a;
d = b * p.b;
return new CP(c, d);
}
public CP jian(CP p) {
int c;
int d;
c = a * p.b - b * p.a;
d = b * p.b;
return new CP(c, d);
}
public int gys(int m, int n) {
if (m < n) {
int t;
t = m;
m = n;
n = t;
}
while (n != 0) {
int r = m % n;
m = n;
n = r;
}
return m;
}
public String toString() {// 输出时默认调用
String s = "";// 将整数变为字符串
if(a % b == 0){
s += a/b;
}
else{
if(a * b < 0){//计算完的结果a/b,有一个为负数
s += "-";
a = Math.abs(a);
b = Math.abs(b);
}
int g = gys(a, b);
s = s + a/g + "/" + b/g;
}
return s;
}
}
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String s = sc.nextLine();
int a = s.charAt(0) - '0';
int b = s.charAt(2) - '0';
int c = s.charAt(4) - '0';
int d = s.charAt(6) - '0';
char op = s.charAt(3);
CP f1 = new CP(a, b);
CP f2 = new CP(c, d);
if (op == '+') {
System.out.println(f1.add(f2));
} else if (op == '-') {
System.out.println(f1.jian(f2));
}
}
sc.close();
}
}