c++定义一个专门处理分数运算的类,保含属性:分子和分母。包含:函数加法运算,减法运算,除法运算,乘法运算,设定分数,获取分数。
时间: 2024-12-08 07:25:06 浏览: 21
c++写的分数类,可进行运算操作和比较操作及和浮点数据的转换操作
在C++中,你可以创建一个名为`Fraction`的类来专门处理分数运算。这个类会包含两个私有数据成员`_numerator`和`_denominator`分别表示分子和分母。以下是该类的基本结构和操作:
```cpp
class Fraction {
private:
int _numerator;
int _denominator;
public:
// 构造函数用于设定初始分数
Fraction(int numerator = 0, int denominator = 1) : _numerator(numerator), _denominator(denominator) {
normalize(); // 确保分母为正,并消除不必要的公共因子
}
// 设定分数
void setFraction(int num, int den) {
_numerator = num;
_denominator = den;
normalize();
}
// 获取分数
std::pair<int, int> getFraction() const {
return { _numerator, _denominator };
}
// 运算符重载:加法
Fraction operator+(const Fraction& other) const {
int newNum = _numerator * other._denominator + other._numerator * _denominator;
int newDen = _denominator * other._denominator;
return Fraction(newNum, newDen);
}
// 减法
Fraction operator-(const Fraction& other) const {
int newNum = _numerator * other._denominator - other._numerator * _denominator;
return Fraction(newNum, _denominator);
}
// 除法
Fraction operator/(const Fraction& other) const {
int newNum = _numerator * other._denominator;
int newDen = _denominator * other._numerator;
return Fraction(newNum, newDen);
}
// 乘法
Fraction operator*(const Fraction& other) const {
return Fraction(_numerator * other._numerator, _denominator * other._denominator);
}
// 私有方法:标准化分数
void normalize() const {
int gcd = __gcd(_numerator, _denominator); // 使用辗转相除法计算最大公约数
_numerator /= gcd;
_denominator /= gcd;
}
private:
// 使用模板库算法计算最大公约数
template <typename T>
static T __gcd(T a, T b) {
return (b == 0) ? a : __gcd(b, a % b);
}
};
```
阅读全文