复数抽象数据类型及其四则运算 (c++)

目的:

给出复数抽象数据类型的完整定义、表示及实现,操作包含:复数的创建及加、减、乘、除运算。


解决思路

该实验要求以复数为主体,进行四则运算操作并检验
具体操作为:
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;
}

运行结果请添加图片描述

总结

运行结果无误,但有个小小的问题:除法实现中除数为0情况下系统会报错

  • 7
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵桑吃鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值