数据结构组算法—复数实现
编程软件
VS2019
#pragma once
#include <iostream>
using namespace std;
struct complex
{
float realpart; //实部
float imagpart; //虚部
};
//创建复数
void assign(complex& A, float real, float imag)
{
A.realpart = real;
A.imagpart = imag;
}
//复数加法: 实部加实部 虚部加虚部
void add(complex& A, complex B, complex C)
{
A.realpart = B.realpart + C.realpart;
A.imagpart = B.imagpart + C.imagpart;
}
//复数乘法: 实部=实部×实部-虚部×虚部 虚部=实部×虚部+虚部×实部
void multiply(complex& A, complex B, complex C)
{
A.realpart = B.realpart * C.realpart - B.imagpart * C.imagpart;
A.imagpart = B.imagpart * C.realpart + B.realpart * C.imagpart;
}
//复数除法: 实部=(实部×实部+虚部×虚部 虚部=实部×虚部-虚部×实部)/(除数的实部平方+虚部平方)
void divide(complex& A, complex B, complex C)
{
float r = (C.imagpart * C.imagpart + C.realpart * C.realpart);
A.realpart = (B.realpart * C.realpart + B.imagpart * C.imagpart) / r;
A.imagpart = (B.imagpart * C.realpart - C.imagpart * B.realpart) / r;
}
int main()
{
//z=[(8+6i)(4+3i)]/[(8+6i)+(4+3i)];
struct complex z1, z2, z3, z4, z;
assign(z1, 8.0, 6.0);//构造复数z1
assign(z2, 4.0, 3.0);//构造复数z2
cout << "Z1的实部为:" << z1.realpart << "虚部为:" << z1.imagpart << endl;
cout << "Z2的实部为:" << z2.realpart << "虚部为:" << z2.imagpart << endl;
add(z3, z1, z2);//俩个复数相加
cout << "Z3的实部为:" << z3.realpart << "虚部为:" << z3.imagpart << endl;
multiply(z4,z1, z2);//俩个复数相乘
cout << "Z4的实部为:" << z4.realpart << "虚部为:" << z4.imagpart << endl;
divide(z, z4, z3);//俩个复数相除
cout << "Z的实部为:" << z.realpart << "虚部为:" << z.imagpart << endl;
system("pause");
return 0;
}