⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 complex.cpp

📁 关于复数计算的简单程序
💻 CPP
字号:
#include <stdio.h>

class CComplex
{
private:
	double Real;
	double Image;
public:
	void SetNum(double R,double I)
	{
		Real=R;
		Image=I;
	}
	void GetNum(double *R,double *I)
	{
		*R=Real;
		*I=Image;
	}
	CComplex(double R,double I)
	{
		SetNum(R,I);
	}
	CComplex()
	{
		Real=Image=0;
	}
};
CComplex Add(CComplex x,CComplex y)
{
	CComplex z;
	double *R1=new double;
	double *I1=new double;
	double *R2=new double;
	double *I2=new double;
	double R,I;
	x.GetNum(R1,I1);
	y.GetNum(R2,I2);
	R=*R1+*R2;
	I=*I1+*I2;
	z.SetNum(R,I);
	delete R1;
	delete I1;
	delete R2;
	delete I2;
	R1=I1=R2=I2=0;
	return z;
}
CComplex Sub(CComplex x,CComplex y)
{
	CComplex z;
	double *R1=new double;
	double *I1=new double;
	double *R2=new double;
	double *I2=new double;
	double R,I;
	x.GetNum(R1,I1);
	y.GetNum(R2,I2);
	R=*R1-*R2;
	I=*I1-*I2;
	z.SetNum(R,I);
	delete R1;
	delete I1;
	delete R2;
	delete I2;
	R1=I1=R2=I2=0;
	return z;
}
CComplex Mul(CComplex x,CComplex y)
{
	CComplex z;
	double *R1=new double;
	double *I1=new double;
	double *R2=new double;
	double *I2=new double;
	double R,I;
	x.GetNum(R1,I1);
	y.GetNum(R2,I2);
	R=(*R1)*(*R2)-(*I1)*(*I2);
	I=(*R1)*(*I2)+(*R2)*(*I1);
	z.SetNum(R,I);
	delete R1;
	delete I1;
	delete R2;
	delete I2;
	R1=I1=R2=I2=0;
	return z;
}
CComplex Div(CComplex x,CComplex y)
{
	CComplex z;
	double *R1=new double;
	double *I1=new double;
	double *R2=new double;
	double *I2=new double;
	double R,I;
	x.GetNum(R1,I1);
	y.GetNum(R2,I2);
	R=((*R1)*(*R2)+(*I1)*(*I2))/((*R2)*(*R2)+(*I2)*(*I2));
	I=((*R2)*(*I1)-(*R1)*(*I2))/((*R2)*(*R2)+(*I2)*(*I2));
	z.SetNum(R,I);
	delete R1;
	delete I1;
	delete R2;
	delete I2;
	R1=I1=R2=I2=0;
	return z;
}
void main()
{
	CComplex x;
	CComplex y;
	CComplex z;
	double *R1=new double;
	double *I1=new double;
	double *R2=new double;
	double *I2=new double;
	double *R=new double;
	double *I=new double;
	int First=1;
	while(1)
	{
		char op;
		printf("Add,Subtract,Multply,Divide or Exit?\n");
		if(First)
		{
			scanf("%c",&op);
			First=0;
		}
		else
		{
			scanf("%c",&op);
			scanf("%c",&op);
		}
		if(op=='e'||op=='E')
			break;
		else
		{
			printf("Input two complex number:\n");
			scanf("%lf+%lfi",R1,I1);
			scanf("%lf+%lfi",R2,I2);
			x.SetNum(*R1,*I1);
			y.SetNum(*R2,*I2);
			if(op=='A'||op=='a')
				z=Add(x,y);
			else if(op=='S'||op=='s')
				z=Sub(x,y);
			else if(op=='M'||op=='m')
				z=Mul(x,y);
			else if(op=='D'||op=='d')
				z=Div(x,y);
			else
				continue;
			z.GetNum(R,I);
			printf("%lf+%lfi\n",*R,*I);
		}
	}
	delete R1;
	delete I1;
	delete R2;
	delete I2;
	delete R;
	delete I;
	R1=I1=R2=I2=R=I=0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -