#CLPR1012. 分数计算器
分数计算器
题目背景
用过卡西欧(Casio)计算器的同学都知道,它可以以 的形式进行分数的四则运算和显示,而对于有理数来说,使用分数进行计算可以一定程度上避免小数的精度损失。
题目描述
在本题中,你需要实现一个分数类(struct
或 class
),使用重载运算符的方式使它支持四则运算和基本的比较。
本题会给出操作次数 和初始分数 ,你要对 进行操作。
定义分数的输入/输出格式为 p/q
,其中 。
定义 个操作分别为:
+
:两个分数相加,。-
:两个分数相减,。*
:两个分数相乘,。/
:两个分数相除,。?
:两个分数进行比较。
对于四则运算操作,输出运算结果并将结果保存到 中;对于比较操作,输出比较结果(>
、<
或 =
)。
由于它的使用者比较粗心,你需要判断每次计算中的分数是否有意义:
当在某次操作中出现了无意义的计算时(如除数为 ),要输出 Err
,并忽略这次操作。
输入格式
第一行一个正整数 和初始分数 ,以空格隔开。
接下来 行,每行一个字符 和一个分数 ,其中 表示本题中定义的操作类型。
注意:题目输入的“分数”不保证为最简,仅仅保证输入符合“分数”的形式(即 p/q
),而其化简后可能为整数。
输出格式
对于每次操作,输出操作结果并换行。
对于结果为整数的输出,必须为整数形式。(例如整数 不应输出 )
对于结果为分数的输出,必须为最简分数。(要求分数 满足 )
样例
5 1/6
+ 1/2
- 1/3
* 3/1
/ 1/9
? 9/1
2/3
1/3
1
9
=
数据范围
,输入的分数 满足 (不保证输入有意义,但保证初始分数有意义)。