C语言实现Complex类复数的加.减.乘.共轭

main.cpp

#include
#include 
#include "Complex.h"
Complex c1,c2,c3;
float r,i;
float a,b,c,d;
int main(int argc, char** argv)
{
	begin:system("cls");
    	printf("请选择功能: \n");
	printf("				      1.复数相加               2.复数相减\n");
	printf("				      3.复数相乘               4.共轭复数\n");
	printf("				      5.退出             \n" );
	int choice;
	scanf("%d", &choice);
    system("cls");
switch(choice)
{
	case 1:
	printf("请输入第一个加数的实部"); 
	scanf("%f",&a);
	printf("第一个加数的虚部"); 
	scanf("%f",&b);
	printf("第二个加数的实部"); 
	scanf("%f",&c);
	printf("第二个加数的虚部"); 
	scanf("%f",&d);
	AssignComplex(c1,a,b);
	AssignComplex(c2,c,d);
	AssignComplex(c3,0,0);	
	system("cls");
	Add(c1,c2,c3);
    GetReal(c3,r);
	GetImag(c3,i);
	printf("结果=%f+%fi",r,i);
	break;
	case 2:
	printf("请输入被减数的实部"); 
	scanf("%f",&a);
	printf("被减数的虚部"); 
	scanf("%f",&b);
	printf("减数的实部"); 
	scanf("%f",&c);
	printf("减数的虚部"); 
	scanf("%f",&d);
	AssignComplex(c1,a,b);
	AssignComplex(c2,c,d);
	AssignComplex(c3,0,0);
	system("cls");
	subtracte(c1,c2,c3);
	GetReal(c3,r);
	GetImag(c3,i);
	printf("结果=%f+%fi",r,i);
	break;
	case 3:
	printf("请输入第一个乘数的实部"); 
	scanf("%f",&a);
	printf("第一个乘数的虚部"); 
	scanf("%f",&b);
	printf("第二个乘数的实部"); 
	scanf("%f",&c);
	printf("第二个乘数的虚部"); 
	scanf("%f",&d);
	AssignComplex(c1,a,b);
	AssignComplex(c2,c,d);
	AssignComplex(c3,0,0);
	system("cls");
	multiply(c1,c2,c3);
    GetReal(c3,r);
	GetImag(c3,i);
	printf("结果=%f+%fi",r,i);
	break;
	case 4:
	printf("请输入数的实部"); 
	scanf("%f",&a);
	printf("请输入数的虚部"); 
	scanf("%f",&b);
	AssignComplex(c1,a,b);
	AssignComplex(c3,0,0);
	system("cls");
	conjugate(c1,c3);
    GetReal(c3,r);
	GetImag(c3,i);
	if(i>0)
	printf("结果=%f+%fi",r,i);
	else
	printf("结果=%f%fi",r,i);
	break;
	case 5:
	exit(0);
	default:
	printf("选项无效,即将跳转到主菜单...\n");
	sleep(1);
	system("cls");
}
getchar();
printf("\n按任意键返回...");
getchar();
goto begin;
}

Complex.cpp

#include "Complex.h"
void AssignComplex(Complex &z,float v1,float v2)
{
	z=(float*)malloc(2*sizeof(float));
	z[0]=v1;
	z[1]=v2;
}
void GetReal(Complex z,float &real)
{
	real=z[0];
}
void GetImag(Complex z,float &Imag)
{
	Imag=z[1];
};
void  Add(Complex z1,Complex z2,Complex &sum)
{
	sum[0]=z1[0]+z2[0];
	sum[1]=z1[1]+z2[1];
}
void  subtracte(Complex z1,Complex z2,Complex &sum)
{
	sum[0]=z1[0]-z2[0];
	sum[1]=z1[1]-z2[1];
}
void  conjugate(Complex z1,Complex &sum)
{
    sum[0]=z1[0];
    sum[1]=-z1[1];
}
void  multiply(Complex z1,Complex z2,Complex &sum)
{
    sum[0]=z1[0]*z2[0]-z1[1]*z2[1];
    sum[1]=z1[1]*z2[0]+z1[0]*z2[1];
}

complex.h

#include 
#include 
typedef  float * Complex;
void AssignComplex(Complex &z,float v1,float v2);
void GetReal(Complex z,float &real);
void GetImag(Complex z,float &Imag);
void  Add(Complex z1,Complex z2,Complex &sum);
void  subtracte(Complex z1,Complex z2,Complex &sum);
void  multiply(Complex z1,Complex z2,Complex &sum);
void  conjugate(Complex z1,Complex &sum);

你可能感兴趣的:(C语言实现Complex类复数的加.减.乘.共轭)