定义一个分数类fraction,数据成员包括fnezil和fenmu,重载运算符“+”,使之能用与分数的乘法运算。将运算符重载为友元函数。编写程序,求两个分数之积并输出
时间: 2024-05-06 07:21:32 浏览: 77
好的,这是一个关于C++编程的问题。下面是代码示例:
```
#include <iostream>
using namespace std;
class fraction {
private:
int fenzil; // 分子
int fenmu; // 分母
public:
// 构造函数
fraction(int fz = 0, int fm = 1) {
if (fm < 0) {
fz = -fz;
fm = -fm;
}
int gcd = gcd_compute(fz, fm);
fenzil = fz / gcd;
fenmu = fm / gcd;
}
// 友元函数
friend fraction operator*(const fraction &f1, const fraction &f2) {
int fz = f1.fenzil * f2.fenzil;
int fm = f1.fenmu * f2.fenmu;
return fraction(fz, fm);
}
// 最大公因数
int gcd_compute(int a, int b) {
if (b == 0)
return a;
else
return gcd_compute(b, a % b);
}
// 输出分数
void display() const {
cout << fenzil << "/" << fenmu;
}
};
int main() {
fraction f1(2, 3), f2(3, 4);
fraction f3 = f1 * f2;
f3.display(); // 输出答案
cout << endl;
return 0;
}
```
这个程序定义了一个分数类fraction,里面包括分子fenzil和分母fenmu。重载了运算符*,使之能够用与分数的乘法运算。运算符重载为友元函数。在主函数中创建了两个分数对象f1和f2,同时计算它们的积,并输出结果。
希望可以帮到你。
阅读全文