21xrx.com
2024-11-05 18:34:37 Tuesday
登录
文章检索 我的文章 写文章
C++实现有理数(分数)
2023-07-05 06:11:24 深夜i     --     --
C++ 实现 有理数 分数

在数学中,有理数是指可表示成两个整数的比的数,比如1/2、3/4等等。在编程语言中,我们也可以实现有理数的运算,这对于某些数学计算和数据处理操作非常有帮助。而C++这门语言本身就支持有理数的运算,下面就给大家简单介绍一下如何在C++中实现有理数。

C++中有理数的表示方法是:将分数的分子和分母组合为一个结构体,结构体中定义两个整数类型的成员变量——分子和分母。例如:


struct Rational

  int numerator;

  int denominator;

;

接下来,我们需要实现有理数的四则运算:加、减、乘、除。

首先是加减法。两个分数相加或相减,需要先求出它们通分。通分后再把分子相加或相减,然后约分即可。C++中可以通过求最大公因数来实现约分。代码如下:


Rational add(Rational a, Rational b) {

  int lcm = a.denominator * b.denominator / gcd(a.denominator, b.denominator);

  int numerator = a.numerator * (lcm / a.denominator) + b.numerator * (lcm / b.denominator);

  int denominator = lcm;

  int divisor = gcd(numerator, denominator);

  return Rational denominator / divisor;

}

Rational sub(Rational a, Rational b) {

  int lcm = a.denominator * b.denominator / gcd(a.denominator, b.denominator);

  int numerator = a.numerator * (lcm / a.denominator) - b.numerator * (lcm / b.denominator);

  int denominator = lcm;

  int divisor = gcd(numerator, denominator);

  return Rational denominator / divisor;

}

接下来是乘法和除法。两个分数相乘,只需将分子和分母分别相乘即可;两个分数相除,需要将除数倒数后再相乘。乘法的代码如下:


Rational mul(Rational a, Rational b) {

  int numerator = a.numerator * b.numerator;

  int denominator = a.denominator * b.denominator;

  int divisor = gcd(numerator, denominator);

  return Rational denominator / divisor;

}

除法的代码如下:


Rational div(Rational a, Rational b) {

  int numerator = a.numerator * b.denominator;

  int denominator = a.denominator * b.numerator;

  int divisor = gcd(numerator, denominator);

  return Rational denominator / divisor;

}

最后,就可以在程序中使用有理数了:


Rational a1;

Rational b 4;

Rational c = add(a, b); // 5/4

Rational d = sub(a, b); // -1/4

Rational e = mul(a, b); // 3/8

Rational f = div(a, b); // 2/3

以上就是在C++中实现有理数的方法和代码,希望对大家有所帮助。当然,这只是一个简单的实现方法,还有很多可以优化和改进的地方。如果你感兴趣,可以继续深入学习并实践。

  
  

评论区

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