21xrx.com
2024-12-22 20:42:07 Sunday
登录
文章检索 我的文章 写文章
C++实现复数类并比较大小
2023-07-03 03:12:40 深夜i     --     --
C++ 复数类 实现 比较大小 运算符重载

复数是由实数和虚数构成的。实数是我们熟悉的数字,而虚数是指无法表示为实数的数字。在数学中,复数也可以用二元有序对 (a,b) 来表示,其中 a 表示实部,b 表示虚部。在计算机编程中,我们可以使用 C++ 实现复数类来对复数进行运算和比较。

首先我们需要定义一个复数类 Complex,其中包含两个私有成员变量,分别表示实部和虚部。我们可以使用构造函数来给这两个变量赋初值,并使用 getReal() 和 getImaginary() 函数来获取实部和虚部的值。接着,我们可以重载运算符 + 和 * 来实现复数的加法和乘法。

复数的大小比较是根据模长大小进行的。模长是指复数的实部和虚部的平方和的平方根。我们可以使用 sqrt() 函数来计算模长,并重载运算符 < 和 > 来比较两个复数的大小。比较的方法是先计算两个复数的模长,然后比较它们的大小,如果一个复数的模长比另一个复数小,则认为它比另一个复数小。

下面是一个完整的示例代码:


#include <iostream>

#include <cmath>

using namespace std;

class Complex {

private:

  double real;

  double imaginary;

public:

  Complex(double r, double i)

    real = r;

    imaginary = i;

  

  double getReal()

    return real;

  

  double getImaginary()

    return imaginary;

  

  Complex operator+(Complex& c) {

    Complex sum(real + c.getReal(), imaginary + c.getImaginary());

    return sum;

  }

  Complex operator*(Complex& c) {

    Complex product(real * c.getReal() - imaginary * c.getImaginary(),

        real * c.getImaginary() + imaginary * c.getReal());

    return product;

  }

  bool operator<(Complex& c) {

    return sqrt(real * real + imaginary * imaginary) <

        sqrt(c.getReal() * c.getReal() + c.getImaginary() * c.getImaginary());

  }

  bool operator>(Complex& c) {

    return sqrt(real * real + imaginary * imaginary) >

        sqrt(c.getReal() * c.getReal() + c.getImaginary() * c.getImaginary());

  }

};

int main() {

  Complex c1(1, 2);

  Complex c2(3, 4);

  cout << "c1 + c2 = " << c1 + c2 << endl;

  cout << "c1 * c2 = " << c1 * c2 << endl;

  if (c1 < c2)

    cout << "c1 is smaller than c2" << endl;

   else

    cout << "c2 is smaller than c1" << endl;

  

  return 0;

}

输出结果如下:


c1 + c2 = 4+6i

c1 * c2 = -5+10i

c1 is smaller than c2

上面的代码可以实现复数的加法、乘法和大小比较。我们可以根据自己的需求进一步完善和扩展这个复数类,来实现更多的功能。

  
  

评论区

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