21xrx.com
2025-03-31 06:00:27 Monday
文章检索 我的文章 写文章
C++实现复数类并比较大小
2023-07-03 03:12:40 深夜i     20     0
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

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

  
  

评论区

请求出错了