21xrx.com
2024-12-22 21:14:04 Sunday
登录
文章检索 我的文章 写文章
C++简单有理数比较代码实现
2023-07-10 15:24:09 深夜i     --     --
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++来比较有理数的大小。值得强调的是,我们定义的分数类只是一个最简形式的分数类,如果需要进行更复杂的运算,比如加减乘除等,我们还需要对该类进行进一步的扩展和修改。

  
  

评论区

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