c++实现ADT复数的存储及算法
时间: 2024-09-17 21:07:37 浏览: 13
在C++中,实现抽象数据类型(ADT)的复数通常会包含两个部分:实部和虚部,可以作为类的数据成员来存储。下面是一个简单的复数类(Complex Number ADT)的实现示例:
```cpp
#include <iostream>
class Complex {
private:
double real;
double imag;
public:
// 构造函数
Complex(double r = 0, double i = 0) : real(r), imag(i) {}
// 数据成员访问
double getReal() const { return real; }
double getImaginary() const { return imag; }
// 设置复数值
void setReal(double r) { real = r; }
void setImaginary(double i) { imag = i; }
// 算法实现:加法
Complex operator+(const Complex& other) const {
return Complex(real + other.real, imag + other.imag);
}
// 减法
Complex operator-(const Complex& other) const {
return Complex(real - other.real, imag - other.imag);
}
// 乘法
Complex operator*(const Complex& other) const {
return Complex(real * other.real - imag * other.imag,
real * other.imag + imag * other.real);
}
// 除法 (假设其他复数非零)
Complex operator/(const Complex& other) const {
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);
}
// 打印复数
void print() const {
std::cout << real << " + " << imag << "i" << std::endl;
}
};
int main() {
Complex c1(3, 4);
Complex c2(5, 6);
c1.print(); // 输出: 3 + 4i
c2.print(); // 输出: 5 + 6i
Complex sum = c1 + c2;
Complex diff = c1 - c2;
Complex prod = c1 * c2;
Complex quot = c1 / c2; // 注意这里假设c2非零
sum.print();
diff.print();
prod.print();
quot.print();
return 0;
}
```
在这个例子中,我们实现了复数的基本操作,如加、减、乘、除,并提供了一个打印方法。用户可以根据需要扩展这个ADT,添加更多的功能。