21xrx.com
2024-09-20 05:29:58 Friday
登录
文章检索 我的文章 写文章
C++实现有理数加法
2023-07-13 12:27:44 深夜i     --     --
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,符合预期。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复