📄 complex.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 + -