京工业大学 <用南京工业大学 x串通知 x 5 高级程序设计2023 S 考试 x+ ng.cmomaxm-as/ex/es/reVersionTestartNewkeybardiplayauruirisesrtAtin-ngetheNetuetion-18ci-selse22828498383ss=25909584d=8 36410081-960754506068p=1&sta 考试 四.程序题(共1题,15.0分) 28. (程序题15.0分) 创建一个名为Rational类,进行分数运算。 编写一个程序测试这个类。 要求:用整型变量表示类的private数据 在声明时得以初始化。这个构造函数应包含默认值,并以简化形式保存分数。例如分数2/4应在对象中保存成numerator为1 , denominator为2的形式。对下列任务,提供完成它们的public成员函数: a)两个Rational值相加,结果应以简化形式保存 b)两个Rational值相减,结果应以简化形式保存 C)两个Rational值相乘,结果应以简化形式保存 d)两个Rational值相除,结果应以简化形式保存 e)以a/b的形式打印Rational值,其中a是分子,b是分母 f)以浮点数的形式打印Rational值 C/C++ #include <iostream> #include <cmath> using namespace std; class Rational{ private: int numerator; int denominator;public: 匹 I 运行
时间: 2024-03-15 20:44:37 浏览: 65
GA- X99 DESIGNARE -EX 点位
抱歉,由于您提供的链接无法访问,我无法进行编程实现和测试。但是,我可以提供一个简单的Rational类的代码示例,供您参考:
```
#include <iostream>
#include <cmath>
using namespace std;
class Rational {
private:
int numerator;
int denominator;
public:
Rational(int num = 0, int den = 1) : numerator(num), denominator(den) {}
// 求最大公因数
int gcd(int a, int b) {
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
// 简化分数
void simplify() {
int gcd_num = gcd(numerator, denominator);
numerator /= gcd_num;
denominator /= gcd_num;
}
// 重载加法运算符
Rational operator+(const Rational& r) const {
Rational res;
res.numerator = numerator * r.denominator + r.numerator * denominator;
res.denominator = denominator * r.denominator;
res.simplify();
return res;
}
// 重载减法运算符
Rational operator-(const Rational& r) const {
Rational res;
res.numerator = numerator * r.denominator - r.numerator * denominator;
res.denominator = denominator * r.denominator;
res.simplify();
return res;
}
// 重载乘法运算符
Rational operator*(const Rational& r) const {
Rational res;
res.numerator = numerator * r.numerator;
res.denominator = denominator * r.denominator;
res.simplify();
return res;
}
// 重载除法运算符
Rational operator/(const Rational& r) const {
Rational res;
res.numerator = numerator * r.denominator;
res.denominator = denominator * r.numerator;
res.simplify();
return res;
}
// 打印分数形式
void printFraction() const {
cout << numerator << "/" << denominator << endl;
}
// 打印浮点数形式
void printFloat() const {
cout << static_cast<double>(numerator) / denominator << endl;
}
};
int main() {
Rational r1(2, 4), r2(3, 5), r3, r4, r5, r6;
// 测试加法
r3 = r1 + r2;
r3.printFraction(); // 11/10
// 测试减法
r4 = r1 - r2;
r4.printFraction(); // -1/10
// 测试乘法
r5 = r1 * r2;
r5.printFraction(); // 3/10
// 测试除法
r6 = r1 / r2;
r6.printFraction(); // 5/6
// 测试打印分数形式
r3.printFraction(); // 11/10
r4.printFraction(); // -1/10
// 测试打印浮点数形式
r5.printFloat(); // 0.3
r6.printFloat(); // 0.833333
return 0;
}
```
阅读全文