21xrx.com
2024-12-23 01:06:35 Monday
登录
文章检索 我的文章 写文章
C++实现分数的加减乘除运算
2023-07-03 08:11:44 深夜i     --     --
C++ 分数 加减乘除运算

C++是一种非常流行的编程语言,拥有广泛的应用领域。在C++中实现分数的加减乘除运算可以帮助我们更好地理解分数的运算规则,同时也是编程技能的提升和应用的拓展。

在C++中,我们可以使用类来表示分数。一个分数可以被表示成一个有理数的形式,即分子与分母的比值。因此,我们可以创建一个类来表示分数,这个类包含分子和分母两个成员变量,并且还应该定义一些成员函数来实现分数的加减乘除运算。

下面是一个基本的分数类的定义:

class Fraction {

public:

  int numerator; // 分子

  int denominator; // 分母

  Fraction(int num, int den); // 构造函数,用来初始化分子和分母

  void reduce(); // 约分函数,用来约分分子和分母

  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 Fraction::operator+(const Fraction &f) const {

  int num = numerator * f.denominator + f.numerator * denominator;

  int den = denominator * f.denominator;

  Fraction result(num, den);

  result.reduce();

  return result;

}

减法运算符重载函数的实现:

Fraction Fraction::operator-(const Fraction &f) const {

  int num = numerator * f.denominator - f.numerator * denominator;

  int den = denominator * f.denominator;

  Fraction result(num, den);

  result.reduce();

  return result;

}

乘法运算符重载函数的实现:

Fraction Fraction::operator*(const Fraction &f) const {

  int num = numerator * f.numerator;

  int den = denominator * f.denominator;

  Fraction result(num, den);

  result.reduce();

  return result;

}

除法运算符重载函数的实现:

Fraction Fraction::operator/(const Fraction &f) const {

  int num = numerator * f.denominator;

  int den = denominator * f.numerator;

  Fraction result(num, den);

  result.reduce();

  return result;

}

这些运算符重载函数的实现方式都相似,都是根据分数的加减乘除规则进行计算,并将结果约分后返回。

最后,让我们来看一下一个完整的分数运算程序的实现:

#include

using namespace std;

class Fraction {

public:

  int numerator; // 分子

  int denominator; // 分母

  Fraction(int num, int den); // 构造函数,用来初始化分子和分母

  void reduce(); // 约分函数,用来约分分子和分母

  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::Fraction(int num, int den) {

  numerator = num;

  denominator = den;

  reduce();

}

void Fraction::reduce() {

  int factor = 1;

  for(int i = 2; i <= min(numerator, denominator); i++) {

    if(numerator % i == 0 && denominator % i == 0)

      factor = i;

  }

  numerator /= factor;

  denominator /= factor;

}

Fraction Fraction::operator+(const Fraction &f) const {

  int num = numerator * f.denominator + f.numerator * denominator;

  int den = denominator * f.denominator;

  Fraction result(num, den);

  result.reduce();

  return result;

}

Fraction Fraction::operator-(const Fraction &f) const {

  int num = numerator * f.denominator - f.numerator * denominator;

  int den = denominator * f.denominator;

  Fraction result(num, den);

  result.reduce();

  return result;

}

Fraction Fraction::operator*(const Fraction &f) const {

  int num = numerator * f.numerator;

  int den = denominator * f.denominator;

  Fraction result(num, den);

  result.reduce();

  return result;

}

Fraction Fraction::operator/(const Fraction &f) const {

  int num = numerator * f.denominator;

  int den = denominator * f.numerator;

  Fraction result(num, den);

  result.reduce();

  return result;

}

int main() {

  Fraction f1(3, 5);

  Fraction f2(2, 7);

  Fraction f3 = f1 + f2;

  Fraction f4 = f1 - f2;

  Fraction f5 = f1 * f2;

  Fraction f6 = f1 / f2;

  cout << f1.numerator << "/" << f1.denominator << " + " << f2.numerator << "/" << f2.denominator << " = " << f3.numerator << "/" << f3.denominator << endl;

  cout << f1.numerator << "/" << f1.denominator << " - " << f2.numerator << "/" << f2.denominator << " = " << f4.numerator << "/" << f4.denominator << endl;

  cout << f1.numerator << "/" << f1.denominator << " * " << f2.numerator << "/" << f2.denominator << " = " << f5.numerator << "/" << f5.denominator << endl;

  cout << f1.numerator << "/" << f1.denominator << " / " << f2.numerator << "/" << f2.denominator << " = " << f6.numerator << "/" << f6.denominator << endl;

  return 0;

}

在这个程序中,我们首先创建了两个分数f1(3, 5)和f2(2, 7),然后使用定义好的运算符重载函数实现了分数的加减乘除运算,并将结果输出到屏幕上。

通过这个简单的实例,我们可以看到在C++中实现分数的加减乘除运算并不难,只需要一个类和几个运算符重载函数就可以了。这个程序不仅可以帮助我们更好地理解分数的运算规则,同时也是编程技能的提升和应用的拓展。

  
  

评论区

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