分数加减法(Java)acm.sdut
2017-03-27 20:42
429 查看
Problem Description
编写一个C程序,实现两个分数的加减法Input
输入包含多行数据每行数据是一个字符串,格式是"a/boc/d"。
其中a, b, c, d是一个0-9的整数。o是运算符"+"或者"-"。
数据以EOF结束
输入数据保证合法
Output
对于输入数据的每一行输出两个分数的运算结果。注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数
Example Input
1/8+3/8 1/4-1/2 1/3-1/3
Example Output
1/2 -1/4 0
比四则运算的题要简单,但是完全要自己敲下来还是有点困难;类中引用类型还不太会用
小结:1.由字符数组转换成整形
int a=ch[0]-'0';
2.由字符串转换成整形
int a==Integer.parseInt(字符串名);
3.由字符串转换成浮点型
double d = Double.parseDouble(字符串名);
float f = Float.parseFloat(字符串名);
4.由字符串转换成字符数组
char[] ch =字符串名.toCharArray();
5.求任意两个数的最大公倍数时,要记得比较两个数绝对值的大小;
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNext()) { String str = sc.next(); char[] ch = str.toCharArray(); int a = ch[0] - '0'; int b = ch[2] - '0'; int c = ch[4] - '0'; int d = ch[6] - '0'; Fs fs1 = new Fs(a, b); Fs fs2 = new Fs(c, d); Fs result = new Fs(); if (ch[3] == '+') { result = fs1.add(fs2); } else if (ch[3] == '-') { result = fs1.sub(fs2); } if (result.fz % result.fm == 0) { System.out.println(result.fz / result.fm); } else { System.out.println(result.fz + "/" + result.fm); } } sc.close(); } } class Fs { int fz, fm; public Fs(int fz, int fm) { this.fz = fz; this.fm = fm; } public Fs() {} public Fs add(Fs fs) { int newfz = fz * fs.fm + fm * fs.fz; int newfm = fm * fs.fm; int gys = gys(newfz, newfm); return new Fs(newfz / gys, newfm / gys); } public Fs sub(Fs fs) { int newfz = fz * fs.fm - fm * fs.fz; int newfm = fm * fs.fm; int gys = gys(newfz, newfm); return new Fs(newfz / gys, newfm / gys); } public int gys(int a, int b) { int n = Math.max(Math.abs(a),Math.abs(b)); int m = Math.min(Math.abs(a),Math.abs(b)); int t; while (n!= 0) { t = m % n; m = n; n = t; } return m; } }
相关文章推荐
- sdut_java_分数加减法
- Java sdut acm 2253 分数加减法
- 分数四则运算(Java)acm.sdut
- 南阳理工ACM-OJ 分数加减法 最大公约数的使用
- C语言 南阳理工ACM 111.分数加减法
- Java sdut acm 1131 CC++训练1---最大公约数与最小公倍数
- Java sdut acm 2402 水杯
- sdut 2253 分数加减法
- Java sdut acm 2271 Eddy的难题
- 多项式求和(Java)acm.sdut
- 2-2 Time类的定义(Java)acm.sdut
- 时间日期格式转换(Java)acm.sdut
- acm每日一练之分数加减法
- Acm 111 分数加减法
- Java sdut acm 3349 答答租车系统(面向对象综合练习)
- 正方形(Java)acm.sdut
- 分数加减法 http://acm.nyist.net/JudgeOnline/problem.php?pid=111
- 南阳理工ACM 111分数加减法
- Java sdut acm 1140 面向对象程序设计上机练习一(函数重载)
- 回文时间(Java)acm.sdut