没啥内容
xjb重载一下就得了
//复数计算器
#include <bits/stdc++.h>
using namespace std;
class cmplx //复数类
{
public:
cmplx() //构造
{
real = 0;
imag = 0;
}
cmplx(double a, double b)
{
real = a;
imag = b;
}
friend cmplx operator + (cmplx a, cmplx b) //友元重载+ - * /
{
cmplx tmp;
tmp.real = a.real + b.real;
tmp.imag = a.imag + b.imag;
return tmp;
}
friend cmplx operator - (cmplx a, cmplx b)
{
cmplx tmp;
tmp.real = a.real - b.real;
tmp.imag = a.imag - b.imag;
return tmp;
}
friend cmplx operator * (cmplx a, cmplx b)
{
cmplx tmp;
tmp.real = (a.real * b.real) - (a.imag * b.imag);
tmp.imag = (a.imag * b.real) + (a.real * b.imag);
return tmp;
}
friend cmplx operator / (cmplx a, cmplx b)
{
cmplx tmp;
tmp.real = ( a.real * b.real + a.imag * b.imag ) / ( b.real * b.real + b.imag * b.imag );
tmp.imag = ( a.imag * b.real - a.real * b.imag ) / ( b.real * b.real + b.imag * b.imag );
return tmp;
}
friend ostream& operator<<(ostream& output, cmplx &a) //友元重载 <<
{
output<<a.real;
a.imag >= 0 ? output<<'+'<<a.imag<<'i'<<endl : output<<a.imag<<'i'<<endl; //控制虚数为正和零时输入正号
return output;
}
friend istream& operator>>(istream& input, cmplx &a) //友元重载 >>
{
input>>a.real>>a.imag;
return input;
}
double real;
double imag;
};
cmplx ta, tb, tc;
int main()
{
int put_welcome(int times);
int flag = 0;
while(1)
{
flag = put_welcome(flag);
if(flag == -1)
break;
}
return 0;
}
int put_welcome(int times)
{
if(times == 0)
{
cout<<endl<<endl;
cout<<" #----------------------------------------#"<<endl;
cout<<" : :"<<endl;
cout<<" : 欢迎进入计算器 :"<<endl;
cout<<" : By 张峻溥 :"<<endl;
cout<<" : :"<<endl;
cout<<" #----------------------------------------#"<<endl<<endl;
}
int mode = 0, mode1 = 0;
cout<<"1 复数类型运算"<<endl;
cout<<"2 标准类型运算"<<endl;
cout<<"0 退出"<<endl;
cout<<"请输入操作(0 - 2) : ";
cin>>mode;
if(mode == 1)
{
cout<<endl<<"1 加法"<<endl;
cout<<"2 减法"<<endl;
cout<<"3 乘法"<<endl;
cout<<"4 除法"<<endl;
cout<<"请输入操作(1 - 4) : ";
cin>>mode1;
cout<<endl<<"请输入复数a的实部和虚部:";
cin>>ta;
cout<<"请输入复数b的实部和虚部:";
cin>>tb;
if(mode1 == 1) tc = ta + tb;
if(mode1 == 2) tc = ta - tb;
if(mode1 == 3) tc = ta * tb;
if(mode1 == 4) tc = ta / tb;
cout<<endl<<endl<<"计算结果为 :" <<tc<<endl<<endl;
}
else if(mode == 2)
{
double x, y, z;
cout<<endl<<"1 加法"<<endl;
cout<<"2 减法"<<endl;
cout<<"3 乘法"<<endl;
cout<<"4 除法"<<endl;
cout<<"请输入操作(1 - 4) : "<<endl;
cin>>mode1;
cout<<endl<<"请输入a 和 b : ";
cin>>x>>y;
if(mode1 == 1) z = x + y;
if(mode1 == 2) z = x - y;
if(mode1 == 3) z = x * y;
if(mode1 == 4) z = x / y;
cout<<"计算结果为 :" <<z<<endl;
}
else
{
return -1;
}
return times + 1;
}