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

小明 2025-05-03 09:41:24 16

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

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

先来回顾一遍书上知识点

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 
The End
微信