21xrx.com
2024-12-22 22:11:13 Sunday
登录
文章检索 我的文章 写文章
C++实现复数类
2023-07-09 14:04:09 深夜i     --     --
C++ 复数 实现 运算

复数是由一个实部和一个虚部组成的数,常可用于描述振动、波动等物理现象。C++是一种高级编程语言,具有面向对象、模板、多重继承等特点,可以方便地定义自己的数据类型。因此,我们可以使用C++实现复数类,方便地进行复数运算和处理。

首先,我们需要定义一个复数类,用于存储实部和虚部的值。可以在类中定义两个double类型的变量,分别表示实部和虚部,如下所示:


class Complex{

private:

  double real; //实部

  double imag; //虚部

public:

  Complex(double real = 0, double imag = 0):real(real),imag(imag){} //构造函数

  double getReal() const return real; //获取实部值

  double getImag() const return imag; //获取虚部值

  void setReal(double real) this->real = real; //设置实部值

  void setImag(double imag) this->imag = imag; //设置虚部值

  Complex operator+(const Complex& other); //重载加法运算符

  Complex operator-(const Complex& other); //重载减法运算符

  Complex operator*(const Complex& other); //重载乘法运算符

  Complex operator/(const Complex& other); //重载除法运算符

  void display(); //输出复数

};

上述代码中,一个重要的操作符是重载运算符,它们用于定义如何对复数进行加、减、乘、除运算。下面我们分别实现这些运算符:


Complex Complex::operator+(const Complex& other){

  return Complex(real + other.real, imag + other.imag);

}

Complex Complex::operator-(const Complex& other){

  return Complex(real - other.real, imag - other.imag);

}

Complex Complex::operator*(const Complex& other){

  return Complex(real * other.real - imag * other.imag,

          real * other.imag + imag * other.real);

}

Complex Complex::operator/(const Complex& other){

  double denominator = other.real * other.real + other.imag * other.imag;

  return Complex((real * other.real + imag * other.imag) / denominator,

          (imag * other.real - real * other.imag) / denominator);

}

上述代码中的四个运算符分别用于实现复数的加、减、乘、除。需要注意的是,乘法运算符中应用了复数运算中的公式:

$$(a+bi)\times(c+di)=(ac-bd)+(ad+bc)i$$

除法运算符中先计算分母,然后应用以下公式得到复数的商:

$$\frac{a+bi}{c+di}=\frac{(a+bi)\times(c-di)}{(c+di)\times(c-di)}=\frac{ac+bd}{c^2+d^2}+\frac{bc-ad}{c^2+d^2}i$$

除此之外,我们还可以在复数类中实现输出函数,方便显示复数的值:


void Complex::display(){

  if(imag >= 0)

    cout << real << "+" << imag << "i" << endl;

  else

    cout << real << imag << "i" << endl;

}

上述代码中,我们判断虚部的符号,如果为正数则输出“+”号。下面是一个使用复数类进行计算的例子:


Complex c1(1, 2);

Complex c2(-1, 3);

Complex c3 = c1 + c2;

Complex c4 = c1 - c2;

Complex c5 = c1 * c2;

Complex c6 = c1 / c2;

c3.display(); //输出0+5i

c4.display(); //输出2-i

c5.display(); //输出-5i

c6.display(); //输出-0.2-0.4i

上述代码中,我们定义了两个复数c1和c2,并进行加、减、乘、除运算,最后输出结果。

综上所述,我们使用C++实现了一个复数类,用于存储和计算复数的值。这个复数类提供了加、减、乘、除等操作符重载,方便对复数进行运算。同时,我们还可以进一步拓展这个复数类,添加其他运算符重载和函数,以满足更为复杂的运算需求。

  
  

评论区

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