21xrx.com
2025-04-17 23:16:22 Thursday
文章检索 我的文章 写文章
C++简单有理数比较代码实现
2023-07-10 15:24:09 深夜i     14     0
C++ 有理数 比较 代码 实现

在C++语言中,我们可以使用类的概念来实现有理数的比较。有理数指的是可以表示为两个整数的比例的数,比如1/2、3/4等。

为了方便,我们可以先定义一个最简形式的分数类,该类包含分子和分母两个整型成员变量,并实现约分功能。我们可以使用辗转相减法来求最大公约数,然后分子和分母都除以最大公约数来得到最简形式。

class Fraction {
public:
  Fraction(int n=0, int d=1) {
    int g = gcd(n, d);
    num = n / g;
    den = d / g;
  }
  int num; // 分子
  int den; // 分母
private:
  // 最大公约数
  int gcd(int a, int b) {
    while (b != 0)
      int temp = b;
      b = a % b;
      a = temp;
    
    return a;
  }
};

然后我们可以重载小于运算符(<),实现有理数的比较。比较两个有理数时,首先要将它们转换成相同的分母,然后再比较分子的大小。具体的实现方法如下:

bool operator<(const Fraction& lhs, const Fraction& rhs) {
  if (lhs.den != rhs.den) {
    return lhs.num * rhs.den < rhs.num * lhs.den;
  } else
    return lhs.num < rhs.num;
  
}

在进行有理数比较时,我们可以直接使用小于运算符来比较大小。比如:

Fraction a(3, 4);
Fraction b(1, 2);
if (a < b)
  cout << "a < b" << endl;
else
  cout << "a >= b" << endl;

这里会输出“a >= b”,因为3/4不小于1/2。

通过以上的代码实现,我们可以方便地使用C++来比较有理数的大小。值得强调的是,我们定义的分数类只是一个最简形式的分数类,如果需要进行更复杂的运算,比如加减乘除等,我们还需要对该类进行进一步的扩展和修改。

  
  

评论区