21xrx.com
2024-11-22 01:59:30 Friday
登录
文章检索 我的文章 写文章
C++中的有理数运算学习指南
2023-07-04 02:45:52 深夜i     --     --
C++ 有理数 运算 学习 指南

有理数是数学中基本的概念之一,而在编程语言C++中,有理数的运算也是比较常见的。有理数是指可以表示为两个整数之比的数,其中分母不能为0。在C++中,有理数可以通过自定义分数类来实现。下面是一个C++中分数类的定义:


class Fraction{

private:

  int numerator, denominator; //分子,分母

public:

  Fraction(int num, int den=1); //构造函数

  Fraction(const Fraction& f); //复制构造函数

  ~Fraction(); //析构函数

  Fraction operator+(const Fraction& f) const; //加法运算符

  Fraction operator-(const Fraction& f) const; //减法运算符

  Fraction operator*(const Fraction& f) const; //乘法运算符

  Fraction operator/(const Fraction& f) const; //除法运算符

  Fraction operator-() const; //取负运算符

  Fraction& operator=(const Fraction& f); //赋值运算符

  bool operator==(const Fraction& f) const; //相等运算符

  bool operator!=(const Fraction& f) const; //不等运算符

  bool operator<(const Fraction& f) const; //小于运算符

  bool operator<=(const Fraction& f) const; //小于等于运算符

  bool operator>(const Fraction& f) const; //大于运算符

  bool operator>=(const Fraction& f) const; //大于等于运算符

  friend ostream& operator<<(ostream& os, const Fraction& f); //输出运算符

  friend istream& operator>>(istream& is, Fraction& f); //输入运算符

};

在上面的分数类定义中,定义了一些常用的运算符号,包括加、减、乘、除等等。这些运算符可以完成有理数的基本运算,而且代码也比较简洁易懂。

另外,分数类还可以实现约分和通分操作。约分就是将分数的分子和分母同时除以它们的最大公约数,这里可以使用C++标准库提供的算法库中的gcd函数来求最大公约数。通分就是将两个分母不同的分数转化为分母相同的分数,也可以使用求最大公约数的方法实现。下面是分数类中的约分和通分的代码实现:


void Fraction::Reduct() {

  int t = gcd(numerator, denominator);

  numerator /= t;

  denominator /= t;

}

Fraction Fraction::Comm(const Fraction& f) const {

  int n = numerator * f.denominator;

  int d = denominator * f.denominator;

  Fraction comm(n, d);

  return comm;

}

最后,对于分数类的输出,可以使用友元函数来实现,这样可以更方便地将分数输出到屏幕上。下面是输出运算符的定义:


ostream& operator<<(ostream& os, const Fraction& f)  

  os << f.numerator << "/" << f.denominator;

  return os;

这样,在程序中就可以通过cout来输出分数了。

使用C++中的分数类实现有理数运算是很方便的,可以大大简化运算的代码量,提高程序的可读性和可维护性。通过学习分数类的实现方法,可以更好地掌握C++中有理数的运算,为以后的编程工作打下良好的基础。

  
  

评论区

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