建立分数类 Fraction,用于表示最简分数。最简分数为分子分母没有公约数的分数。该分数类重载运算符+和-,分别实现两个分数的加法和减法。具体要求如下:。(1)私有数据成员。 int m:分子。" int n:分母。" (2)公有成员函数。 Fraction(int mint_n):构造函数,用_m、n分别初始化m n,同时对分数进行约简,使其成为最简分数。" int ged(intxinty):求x和y的最大公约数(对分数进行约简时用到),注意结果要为正数。。 Fraction operator+(Fraction &b):重载双目加法运算。" Fraction operator-(Fraction &b):重载双目减法运算。 void show():输出分数,格式为m/n。"
时间: 2024-02-16 16:02:44 浏览: 200
好的,我理解了你的要求。以下是我为你编写的Fraction类的代码:
```cpp
#include<iostream>
using namespace std;
class Fraction{
private:
int m; // 分子
int n; // 分母
public:
Fraction(int mint_n){ // 构造函数
m = mint_n;
n = 1;
}
Fraction(int mint_m, int mint_n){ // 构造函数,用于初始化分数
m = mint_m;
n = mint_n;
simplify(); // 约简分数
}
int ged(int x, int y){ // 求最大公约数
if(y == 0)
return x;
return ged(y, x%y);
}
void simplify(){ // 约简分数
int g = ged(m, n);
m /= g;
n /= g;
if(n < 0){ // 分母为负数时,将分子分母都取相反数
m = -m;
n = -n;
}
}
Fraction operator+(Fraction &b){ // 重载双目加法运算
int new_m = m*b.n + n*b.m;
int new_n = n*b.n;
Fraction result(new_m, new_n);
return result;
}
Fraction operator-(Fraction &b){ // 重载双目减法运算
int new_m = m*b.n - n*b.m;
int new_n = n*b.n;
Fraction result(new_m, new_n);
return result;
}
void show(){ // 输出分数
cout << m << "/" << n << endl;
}
};
int main(){
Fraction f1(1, 2), f2(1, 3);
Fraction f3 = f1 + f2;
Fraction f4 = f1 - f2;
f3.show();
f4.show();
return 0;
}
```
在这个代码中,我们创建了一个Fraction类来表示分数。该类有两个私有成员变量m和n,分别表示分数的分子和分母。我们还提供了两个构造函数,一个用于将整数转换为分数,另一个用于初始化分数。
我们提供了一个ged函数来求最大公约数,并在simplify函数中使用它来将分数约简为最简分数。我们还重载了加法运算符+和减法运算符-,用于执行两个分数的加法和减法,并返回一个新分数对象。最后,我们还提供了一个show函数来输出分数。
阅读全文