使用C++程序实现ADT复数的存储及算法。
时间: 2024-09-18 14:01:47 浏览: 33
复数ADT及其实现实验报告.docx
在C++中,我们可以使用结构体(struct)或者类(class)来实现抽象数据类型(Abstract Data Type,简称ADT)的复数。这里是一个简单的复数类的示例:
```cpp
#include <iostream>
using namespace std;
// 定义复数类ComplexNumber
class ComplexNumber {
private:
double real; // 实部
double imag; // 虚部
public:
// 构造函数
ComplexNumber(double r = 0, double i = 0) : real(r), imag(i) {}
// 获取实部和虚部的成员函数
double getReal() const { return real; }
double getImaginary() const { return imag; }
// 设置复数值的成员函数
void setComplex(double r, double i) {
real = r;
imag = i;
}
// 操作符重载,实现加法、减法和乘法运算
ComplexNumber operator+(const ComplexNumber& other) const {
return ComplexNumber(real + other.real, imag + other.imag);
}
ComplexNumber operator-(const ComplexNumber& other) const {
return ComplexNumber(real - other.real, imag - other.imag);
}
ComplexNumber operator*(const ComplexNumber& other) const {
return ComplexNumber(real * other.real - imag * other.imag,
real * other.imag + imag * other.real);
}
// 打印复数的友元函数
friend ostream& operator<<(ostream& os, const ComplexNumber& num) {
os << "(" << num.getReal() << ", " << num.getImaginary() << ")";
return os;
}
};
int main() {
ComplexNumber c1(2.5, 3.7);
ComplexNumber c2(1.2, -4.8);
cout << "c1: " << c1 << endl;
cout << "c1 + c2: " << c1 + c2 << endl;
cout << "c1 - c2: " << c1 - c2 << endl;
cout << "c1 * c2: " << c1 * c2 << endl;
return 0;
}
```
在这个例子中,我们实现了复数的存储(通过real和imag两个double类型的变量),以及基本的算术操作如加法、减法和乘法,并通过友元函数支持了复数的输出。
阅读全文