C++基于控制台的复数计算器





没啥内容 

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;
}

posted @ 2018-06-12 20:52  张浦  阅读(221)  评论(0编辑  收藏  举报