21xrx.com
2025-04-01 16:16:31 Tuesday
文章检索 我的文章 写文章
C++实现有理数加法
2023-07-13 12:27:44 深夜i     25     0
C++ 有理数 加法 实现

在C++编程中,有理数加法是一个常见的操作。有理数可以表示为两个整数的比值,例如3/4或1/2。进行有理数加法时,我们需要将两个有理数相加,结果仍然是一个有理数。

具体实现有理数加法的方法如下:

1. 定义有理数类。在类中定义分子和分母。分子和分母可以是任意整数,因此我们需要使用整数来表示它们。

2. 定义加法函数。有理数加法的公式为a/b + c/d = (ad + bc) / bd。根据这个公式,我们可以在类中定义一个加法函数,将两个有理数相加并返回结果。

3. 实现约分。由于有理数相加后可能会得到一个不完全约分的结果,因此我们需要在加法函数中实现约分操作,使结果能够以最简分数形式表示。约分的方法是将分子和分母同时除以它们的最大公约数。

下面是一个实现有理数加法的示例代码:

#include <iostream>
using namespace std;
class Rational {
public:
  Rational(int n, int d) : num(n), den(d) {}
  Rational operator+(const Rational& rhs) const {
    int n = num * rhs.den + den * rhs.num;
    int d = den * rhs.den;
    int gcd = getGcd(n, d);
    return Rational(n / gcd, d / gcd);
  }
  friend ostream& operator<<(ostream& os, const Rational& r)
    os << r.num << "/" << r.den;
    return os;
  
private:
  int num, den;
  int getGcd(int a, int b) {
    if (b == 0) return a;
    return getGcd(b, a % b);
  }
};
int main() {
  Rational r1(1, 2), r2(3, 4);
  Rational r3 = r1 + r2;
  cout << r3 << endl;
  return 0;
}

在这个示例代码中,我们首先定义了一个有理数类Rational,它包含分子和分母两个私有成员变量。在加法函数operator+中,我们按照有理数加法公式计算结果,并在返回之前进行约分。约分采用递归的方式实现最大公约数的计算。

在main函数中,我们实例化了两个有理数对象r1和r2,并将它们相加得到r3。最后将r3输出到控制台。运行结果为5/4,符合预期。

  
  

评论区

请求出错了