目的:
给出复数抽象数据类型的完整定义、表示及实现,操作包含:复数的创建及加、减、乘、除运算。
解决思路
该实验要求以复数为主体,进行四则运算操作并检验
具体操作为:
1).在头文件声明复数结构体,再声明对该结构体创建的复数进行四则运算及其表示的管理类。
2).创建源文件对头文件进行具体的实现。
3).创建一个主函数对该实验结果进行测试。
接下来是头文件的声明 (Complex.h)
//复数结构体创建
struct Complex {
float realPart; //实部
float imagePart; //虚部
};
//复数四则运算管理类创建
class Manage {
public: //公有权限
//创建复数
void create(Complex& c, float x, float y);
//获取实部
float getReal(Complex& c);
//获取虚部
float getImage(Complex& c);
//加
Complex add(Complex& c1, Complex& c2);
//减
Complex sub(Complex& c1, Complex& c2);
//乘
Complex mul(Complex& c1, Complex& c2);
//除
Complex div(Complex& c1, Complex& c2);
//获取
void getComplex(Complex& c);
};
源文件 (Complex.cpp)
#include <iostream>
using namespace std;
#include "Complex.h" //包含Complex头文件
//创建复数
void Manage::create(Complex& c, float x, float y) {
c.realPart = x;
c.imagePart = y;
}
//获取实部
float Manage::getReal(Complex& c) {
return c.realPart;
}
//获取虚部
float Manage::getImage(Complex& c) {
return c.imagePart;
}
//加
Complex Manage::add(Complex& c1, Complex& c2) {
Complex sum = { 0 };
sum.realPart = c1.realPart + c2.realPart;
sum.imagePart = c1.imagePart + c2.imagePart;
return sum;
}
//减
Complex Manage::sub(Complex& c1, Complex& c2) {
Complex sub = { 0 };
sub.realPart = c1.realPart - c2.realPart;
sub.imagePart = c1.imagePart - c2.imagePart;
return sub;
}
//乘
Complex Manage::mul(Complex& c1, Complex& c2) {
Complex mul = { 0 };
mul.realPart = c1.realPart * c2.realPart - c1.imagePart * c2.imagePart;
mul.imagePart = c1.realPart * c2.imagePart + c1.imagePart * c2.realPart;
return mul;
}
//除
Complex Manage::div(Complex& c1, Complex& c2) {
Complex div = { 0 };
div.realPart = (c1.realPart * c2.realPart + c1.imagePart * c2.imagePart) / (c2.realPart * c2.realPart + c2.imagePart * c2.imagePart);
div.imagePart = (c1.imagePart * c2.realPart - c1.realPart * c2.imagePart) / (c2.realPart * c2.realPart + c2.imagePart * c2.imagePart);
return div;
}
//获取
void Manage::getComplex(Complex& c) {
cout << "(" << c.realPart << ", " << c.imagePart << "i)" << endl;
}
主函数测试 (mComplex.cpp)
#include <iostream>
using namespace std;
#include "Complex.h" //包含Complex头文件
//测试部分
int main() {
//创建复数
Complex c[3] = { 0 };
//创建管理对象
Manage m;
//复数赋值
m.create(c[0], 2, 3);
m.create(c[1], 3, 4);
cout << "打印--------" << endl;
m.getComplex(c[0]);
m.getComplex(c[1]);
cout << "\n加----------" << endl;
c[2] = m.add(c[0], c[1]);
m.getComplex(c[2]);
cout << "\n减----------" << endl;
c[2] = m.sub(c[0], c[1]);
m.getComplex(c[2]);
cout << "\n乘----------" << endl;
c[2] = m.mul(c[0], c[1]);
m.getComplex(c[2]);
cout << "\n除----------" << endl;
c[2] = m.div(c[0], c[1]);
m.getComplex(c[2]);
system("pause");
return 0;
}
运行结果![请添加图片描述](https://img-blog.csdnimg.cn/dec78ac883a4452ab16d69dd5759c448.bmp)
总结
运行结果无误,但有个小小的问题:除法实现中除数为0情况下系统会报错