编写程序,描述日常生活里的分数,利用成员函数完成分数的求和、最简化、按指定格式打印的操作,并在main中完成对应的测试
时间: 2024-02-09 11:12:04 浏览: 55
简单的处理分数的程序
好的,我可以为您编写一个C++程序,满足您的需求。
以下是代码实现:
```cpp
#include<iostream>
using namespace std;
class Fraction {
private:
int numerator; // 分子
int denominator; // 分母
public:
Fraction(int n = 0, int d = 1) {
numerator = n;
denominator = d;
}
Fraction operator+(const Fraction& f) const { // 加法运算符重载
int n = numerator * f.denominator + f.numerator * denominator;
int d = denominator * f.denominator;
return Fraction(n, d).simplify(); // 返回最简化的结果
}
Fraction simplify() const { // 最简化
int gcd = getGCD(numerator, denominator);
return Fraction(numerator / gcd, denominator / gcd);
}
int getGCD(int a, int b) const { // 辗转相除法求最大公约数
return b == 0 ? a : getGCD(b, a % b);
}
void print() const { // 按指定格式打印
if (denominator == 1) {
cout << numerator << endl;
} else if (numerator > denominator) {
int integer = numerator / denominator;
int n = numerator % denominator;
cout << integer << " " << n << "/" << denominator << endl;
} else {
cout << numerator << "/" << denominator << endl;
}
}
};
int main() {
Fraction f1(2, 3), f2(3, 4), f3;
f3 = f1 + f2; // 求和
f3.print(); // 按指定格式打印结果
return 0;
}
```
以上程序定义了一个分数类`Fraction`,包含了分子和分母两个成员变量,以及求最大公约数、最简化、加法运算符重载和按指定格式打印四个成员函数。在`main`函数中,创建了两个分数对象`f1`和`f2`,分别为2/3和3/4,然后求和并将结果保存在`f3`中,最后按指定格式打印结果。
您可以根据需要进行修改和扩展,比如添加减法、乘法和除法运算符重载等。
阅读全文