【C++】数据结构:抽象定义复数,并实现复数的加、减、乘、除四则运算

大一生在线学习数据结构,哭唧唧!

步入正题,数据结构的第一个程序就是抽象定义复数,因为我没有学过类和对象,所以只能用最简单的结构体来定义复数。

先来回顾一遍书上知识点

1.复数的抽象定义

2.表示部分

3.实现部分

 谢谢是个懒人,直接搬书。

我将数据结构中算法设计简化为“三步走”。

首先定义复数,需要一个实部和虚部。利用结构体来创建对象。

 其次对象有了,接下来是寻找对象之间的关系。

最后是对对象的操作。

复数C为复数A和复数B之间的操作转化而来。因为结构体默认是私有成员,所以外部无法访问他的成员。

注:在 add, minus, multiply, divide 函数中,我使用了引用传递地址传递两种方式来修改结构体参数,并且声明了参数为 const,以防止在函数内修改参数。(最开始我使用值传递,编译器就会报错。)

1.加法操作

这里引用C,A,B,返回的是数。

2.减法操作

这里用的是C,A,B的地址。返回的是一个指针。

 3.乘法操作

 复数C的实部=实部A*实部B-虚部A*虚部B

复数C的虚部=实部A*虚部B+虚部A*实部B(高中数学知识)

4.除法操作

实部C=(实部A*实部B+虚部A*虚部B)/(2*实部B+2*虚部B)

虚部C=(虚部A*实部B-实部A*虚部B)/(2*实部B+2*虚部B) 

所有操作完成构造以后,就能在主函数中测试了。

 完整源代码

 struct Complex//构建复数的实部和虚部
{
	float realPart;
	float imagPart;
};

 void create(Complex &A, float x, float y)//创建一个复数
 {
	 A.realPart = x;//A的实部为x
	 A.imagPart = y;//A的虚部为y
 }

 void Assign(Complex* A, float real, float imag)//赋值
 {
	 A->realPart = real;
	 A->imagPart = imag;
 }
 Complex add(Complex&C, const Complex&A,const Complex&B)//两个复数相加
 {
	 C.realPart = A.realPart + B.realPart;
	 C.imagPart = A.imagPart + B.imagPart;
	 return C;
 }
 Complex subtraction(Complex* C,const Complex& A,const Complex& B)//两个复数相减
 {
	 C->realPart = A.realPart - B.realPart;
	 C->imagPart = A.imagPart - B.imagPart;
	 return *C;
 }
 Complex multiply(Complex* C,const Complex& A,const Complex& B)//复数相乘
 {
	 C->realPart = A.realPart * B.realPart - A.imagPart*B.imagPart;//(ac-bd)
	 C->imagPart = A.realPart * B.imagPart + A.imagPart * B.realPart;//(bc+ad)
	 return *C;
 }
 Complex divide(Complex* C, const Complex& A,const Complex& B)//复数相除
 {
	 C->realPart=(A.realPart*B.realPart+A.imagPart*B.imagPart)/(B.realPart*2+B.imagPart*2);// (ac + bd) / (c ^ 2 + d ^ 2)
	 C->imagPart = (A.imagPart * B.realPart - A.realPart * B.imagPart) / (B.realPart * 2 + B.imagPart * 2); //(bc-ad)/(c^2+d^2)
	 return *C;
 }

 int main() {
	 //创建两个复数
	 Complex C1;
	 Complex C2;
	 create(C1, 2, 4);
	 create(C2, 3, 5);
	 cout << "第一个复数为:C1=" << C1.realPart << "+" << C1.imagPart <<"i" << endl;
	 cout << "第二个复数为:C2=" << C2.realPart << "+" << C2.imagPart << "i" << endl;
	
	 //创建一个C3,使C3=C1+C2
	 Complex C3;
	 add(C3, C1, C2);
	 cout << "两个复数的和为:";
	 cout << "C3=C1+C2=" << C3.realPart << "+" << C3.imagPart << "i" << endl;
	
	 //创建一个C4,使C4=C1-C2
	 Complex C4;
	 subtraction(&C4, C1, C2);
	 cout << "两个复数的差为:";
	 cout << "C4=C1-C2=" << C4.realPart << "+" << "("<<C4.imagPart<<")" << "i" << endl;

	 //创建一个C5,使C5=C1*C2
	 Complex C5;
	 multiply(&C5, C1, C2);
	 cout << "两个复数的乘积为:";
	 cout << "C5=C1*C2=" << C5.realPart << "+" << C5.imagPart << "i" << endl;

	 //创建一个C6,使C6=C1/C2
	 Complex C6;
	 divide(&C6, C1, C2);
	 cout << "两个复数相除为:";
	 cout << "C6=C1/C2=" << C6.realPart << "+" << C6.imagPart << "i" << endl;

	 return 0;
 }

但是主函数中的数据是我自己填进去的。小伙伴们可以自己修改C1和C2中的数据。其中源代码中有一个赋值的函数,我在主函数中并没有调用。如果要修改数据,就可以使用它。

若有不对,请指正,谢谢!

学好数据结构是我这学期的痛,太难了!加油努力,最后,鼓励每一个热爱编程的人:勤奋,是一种最简单的人生投资。

### IntelliJ IDEA 中通义 AI 功能介绍 IntelliJ IDEA 提供了一系列强大的工具来增强开发体验,其中包括与通义 AI 相关的功能。这些功能可以帮助开发者更高效地编写代并提高生产力。 #### 安装通义插件 为了使用通义的相关特性,在 IntelliJ IDEA 中需要先安装对应的插件: 1. 打开 **Settings/Preferences** 对话框 (Ctrl+Alt+S 或 Cmd+, on macOS)。 2. 导航到 `Plugins` 页面[^1]。 3. 在 Marketplace 中搜索 "通义" 并点击安装按钮。 4. 完成安装后重启 IDE 使更改生效。 #### 配置通义服务 成功安装插件之后,还需要配置通义的服务连接信息以便正常使用其提供的各项能力: - 进入设置中的 `Tools | Qwen Coding Assistant` 菜单项[^2]。 - 填写 API Key 和其他必要的认证参数。 - 测试连接以确认配置无误。 #### 使用通义辅助编程 一旦完成上述准备工作,就可以利用通义来进行智能编支持了。具体操作如下所示: ##### 自动补全代片段 当输入部分语句时,IDE 将自动提示可能的后续逻辑,并允许一键插入完整的实现方案[^3]。 ```java // 输入 while 循环条件前半部分... while (!list.isEmpty()) { // 激活建议列表选择合适的循环体内容 } ``` ##### 解释现有代含义 选中某段复杂的表达式或函数调用,右键菜单里会有选项可以请求通义解析这段代的作用以及优化意见。 ##### 生产测试案例 对于已有的业务逻辑模块,借助于通义能够快速生成单元测试框架及初始断言集,减少手动构建的成本。 ```python def test_addition(): result = add(2, 3) assert result == 5, f"Expected 5 but got {result}" ```
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值