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

  • 相关阅读:
    【Longest Common Prefix】cpp
    【WildCard Matching】cpp
    【 Regular Expression Matching 】cpp
    【Longest Palindromic Substring】cpp
    【Add binary】cpp
    【String to Integer (atoi) 】cpp
    【Implement strStr() 】cpp
    【Valid Palindrome】cpp
    【LRU Cache】cpp
    【Reorder List】cpp
  • 原文地址:https://www.cnblogs.com/zeolim/p/12270626.html
Copyright © 2020-2023  润新知