1.3抽象数据类型的表示与实现_复数运算.

#include<stdio.h>
typedef struct{
	float realpart; /*实部 */ 
	float imagprat; /*虚部 */ 
}Complex;		/*定义复数抽象类型 */ 

void assign(Complex *A, float real, float imag); /*赋值*/
void add( Complex A, Complex B, Complex *c); /* A + B */
void minus( Complex A, Complex B, Complex *c); /* A - B */
void multiply( Complex A, Complex B, Complex *c); /* A * B */
void divide( Complex A, Complex B, Complex *c); /* A / B */

void gonger(Complex *z);  //求共轭复数 

int main()
{
	Complex z1, z2, z3, z4, z;
	float RealPart, ImagPart;
	assign(&z1, 8.0, 6.0);
	printf("%lf %lf\n",z1.realpart ,z1.imagprat);
	assign(&z2, 4.0, 3.0);
	printf("%lf %lf\n",z2.realpart ,z2.imagprat);
	add(z1, z2, &z3);
	printf("%lf %lf\n",z3.realpart ,z3.imagprat);
	multiply(z1, z2, &z4);
	printf("%lf %lf\n",z4.realpart ,z4.imagprat);
	divide(z4, z3, &z);
	printf("%lf %lf\n",z.realpart ,z.imagprat);

	return 0;
}

void assign(Complex *A, float real, float imag)
{
	A->realpart = real;
	A->imagprat = imag;
}

void add( Complex A, Complex B, Complex *c)
{
	c->realpart = A.realpart + B.realpart;
	c->imagprat = A.imagprat + B.imagprat;
}

void minus( Complex A, Complex B, Complex *c)
{
	c->realpart = A.realpart - B.realpart;
	c->imagprat = A.imagprat - B.imagprat;
}

void multiply( Complex A, Complex B, Complex *c)
{
	c->realpart = A.realpart*B.realpart - A.imagprat*B.imagprat;
	c->imagprat = A.realpart*B.imagprat + A.imagprat*B.realpart;
}
void gonger(Complex *z) //求共轭复数 
{
	z->imagprat = -(z->imagprat);
}
void divide( Complex A, Complex B, Complex *c)
{
	gonger(&B);
	c->realpart = (A.realpart*B.realpart - A.imagprat*B.imagprat) / (B.imagprat*B.imagprat +B.realpart*B.realpart);
	c->imagprat = (A.realpart*B.imagprat + A.imagprat*B.realpart) / (B.imagprat*B.imagprat +B.realpart*B.realpart);
}

猜你喜欢

转载自blog.csdn.net/weixin_45899700/article/details/105854957
今日推荐