编写程序,描述日常生活里的分数,利用成员函数完成分数的求和、最简化、按指定格式打印的操作,并在main中完成对应的测试。
时间: 2023-12-10 16:39:13 浏览: 21
下面是一个实现以上功能的C++程序:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
class Fraction {
private:
int numerator; // 分子
int denominator; // 分母
public:
Fraction(int n = 0, int d = 1) {
numerator = n;
denominator = d;
}
// 求最大公约数
int gcd(int a, int b) {
if (b == 0)
return a;
return gcd(b, a % b);
}
// 求最小公倍数
int lcm(int a, int b) {
return a * b / gcd(a, b);
}
// 分数的加法
Fraction operator+ (Fraction f) {
int lcmValue = lcm(denominator, f.denominator);
int num1 = numerator * lcmValue / denominator;
int num2 = f.numerator * lcmValue / f.denominator;
return Fraction(num1 + num2, lcmValue).simplify();
}
// 分数的减法
Fraction operator- (Fraction f) {
int lcmValue = lcm(denominator, f.denominator);
int num1 = numerator * lcmValue / denominator;
int num2 = f.numerator * lcmValue / f.denominator;
return Fraction(num1 - num2, lcmValue).simplify();
}
// 分数的乘法
Fraction operator* (Fraction f) {
return Fraction(numerator * f.numerator, denominator * f.denominator).simplify();
}
// 分数的除法
Fraction operator/ (Fraction f) {
return Fraction(numerator * f.denominator, denominator * f.numerator).simplify();
}
// 分数的求倒数
Fraction reciprocal() {
return Fraction(denominator, numerator);
}
// 分数的约分
Fraction simplify() {
int gcdValue = gcd(abs(numerator), denominator);
return Fraction(numerator / gcdValue, denominator / gcdValue);
}
// 获取分子
int getNumerator() {
return numerator;
}
// 获取分母
int getDenominator() {
return denominator;
}
// 按指定格式打印分数
void print() {
if (numerator == 0) {
cout << "0" << endl;
} else if (denominator == 1) {
cout << numerator << endl;
} else {
cout << numerator << "/" << denominator << endl;
}
}
};
int main() {
Fraction f1(3, 4);
Fraction f2(1, 2);
Fraction f3 = f1 + f2;
Fraction f4 = f1 - f2;
Fraction f5 = f1 * f2;
Fraction f6 = f1 / f2;
Fraction f7 = f1.reciprocal();
cout << "f1 = ";
f1.print();
cout << "f2 = ";
f2.print();
cout << "f1 + f2 = ";
f3.print();
cout << "f1 - f2 = ";
f4.print();
cout << "f1 * f2 = ";
f5.print();
cout << "f1 / f2 = ";
f6.print();
cout << "1 / f1 = ";
f7.print();
return 0;
}
```
运行结果如下:
```
f1 = 3/4
f2 = 1/2
f1 + f2 = 5/4
f1 - f2 = 1/4
f1 * f2 = 3/8
f1 / f2 = 3/2
1 / f1 = 4/3
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)