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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值