计算器改良系统

没看见重载输入输出流的要求,结果尴尬了。。。

修改后代码如下:

#include <iostream>
#include <iomanip>
using namespace std;
class fushu
{
public:
    fushu(){real=0,imag=0;}
    fushu(double r,double i){real=r,imag=i;}
    friend fushu operator +(fushu c1,fushu c2);
    friend fushu operator -(fushu c1,fushu c2);
    friend fushu operator *(fushu c1,fushu c2);
    friend fushu operator /(fushu c1,fushu c2);
    friend istream& operator >>(istream&,fushu&);
    friend ostream& operator <<(ostream&,fushu&);
    void jisuan();
private:
    double real;
    double imag;
};
fushu operator +(fushu c1,fushu c2)
{
    return fushu(c1.real+c2.real,c1.imag+c2.imag);
}
fushu operator -(fushu c1,fushu c2)
{
    return fushu(c1.real-c2.real,c1.imag-c2.imag);
}
fushu operator *(fushu c1,fushu c2)
{
    return fushu(c1.real*c2.real-c1.imag*c2.imag,c1.imag*c2.real+c1.real*c2.imag);
}
fushu operator /(fushu c1,fushu c2)
{
    return fushu((c1.real*c2.real+c1.imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag),(c1.imag*c2.real-c1.real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag));
}
istream& operator >>(istream& input,fushu&c)
{
    input>>c.real>>c.imag;
    return input;
}
ostream& operator <<(ostream& output,fushu&c)
{
    output<<"("<<c.real<<","<<c.imag<<"i)"<<endl;
    return output;
}
void danzi1()
{
    cout<<"请选择您的操作:";
    cout<<endl<<endl;
    cout<<"                 "<<"1  标准类型计算"<<endl;
    cout<<"                 "<<"2  复数类型计算"<<endl;
    cout<<"                 "<<"0  退出"<<endl;
    cout<<"请选择按键 0-2:";
}
void danzi2()
{
    cout<<endl<<endl;
    cout<<"计算器选择菜单";
    cout<<endl<<endl;
    cout<<"                 "<<"1  加法"<<endl;
    cout<<"                 "<<"2  减法"<<endl;
    cout<<"                 "<<"3  乘法"<<endl;
    cout<<"                 "<<"4  除法"<<endl;
    cout<<"                 "<<"0  返回上级菜单"<<endl;
    cout<<"                 "<<"5  退出系统"<<endl;
    cout<<"请选择按键 0-5:";
}
void fushu::jisuan()
{
    int m;
    kaishi:{danzi1();cin>>m;}
    if(m==1)
    {
        int n;
        double x,y;
        shuru1:{danzi2();cin>>n;}
        if(n==1)
        {
            cout<<"请输入两个数"<<endl;
            cin>>x>>y;
            cout<<x+y<<endl;
            goto shuru1;
        }
        else if(n==2)
        {
            cout<<"请输入两个数"<<endl;
            cin>>x>>y;
            cout<<x-y<<endl;
            goto shuru1;
        }
        else if(n==3)
        {
            cout<<"请输入两个数"<<endl;
            cin>>x>>y;
            cout<<x*y<<endl;
            goto shuru1;
        }
        else if(n==4)
        {
            cout<<"请输入两个数"<<endl;
            cin>>x>>y;
            cout<<x/y<<endl;
            goto shuru1;
        }
        else if(n==0)
        {
            goto kaishi;
        }
        else if(n==5)
        {
            return ;
        }
        else
        {
            cout<<"输入错误请帅哥or靓女从新选择"<<endl;
            goto shuru1;
        }
    }
    else if(m==2)
    {
        int n;
        fushu c1,c2,c3;
        shuru2:{danzi2();cin>>n;}
        if(n==1)
        {
            cout<<"请输入两个复数的实部和虚部"<<endl;
            cin>>c1>>c2;
            cout<<"c1="<<"("<<c1.real<<","<<c1.imag<<"i)"<<endl;
            cout<<"c2="<<"("<<c2.real<<","<<c2.imag<<"i)"<<endl;
            c3=c1+c2;
            cout<<"c1+c2=";
            cout<<c3;
            goto shuru2;
        }
        else if(n==2)
        {
            cout<<"请输入两个复数的实部和虚部"<<endl;
            cin>>c1>>c2;
            cout<<"c1="<<"("<<c1.real<<","<<c1.imag<<"i)"<<endl;
            cout<<"c2="<<"("<<c2.real<<","<<c2.imag<<"i)"<<endl;
            c3=c1-c2;
            cout<<"c1-c2=";
            cout<<c3;
            goto shuru2;
        }
        else if(n==3)
        {
            cout<<"请输入两个复数的实部和虚部"<<endl;
            cin>>c1>>c2;
            cout<<"c1="<<"("<<c1.real<<","<<c1.imag<<"i)"<<endl;
            cout<<"c2="<<"("<<c2.real<<","<<c2.imag<<"i)"<<endl;
            c3=c1*c2;
            cout<<"c1*c2=";
            cout<<c3;
            goto shuru2;
        }
        else if(n==4)
        {
            cout<<"请输入两个复数的实部和虚部"<<endl;
            cin>>c1>>c2;
            cout<<"c1="<<"("<<c1.real<<","<<c1.imag<<"i)"<<endl;
            cout<<"c2="<<"("<<c2.real<<","<<c2.imag<<"i)"<<endl;
            c3=c1/c2;
            cout<<"c1/c2=";
            cout<<c3;
            goto shuru2;
        }
        else if(n==0)
        {
            goto kaishi;
        }
        else if(n==5)
        {
            return ;
        }
        else
        {
            cout<<"输入错误请帅哥or靓女从新选择"<<endl;
            goto shuru2;
        }
    }
    else if(m==0)
    {
        return ;
    }
    else
    {
        cout<<"输入错误请帅哥or靓女从新选择"<<endl;
        goto kaishi;
    }
}
int main()
{
    cout<<endl<<endl;
    cout<<"      $----------------------------------------$"<<endl;
    cout<<"      :                                        :"<<endl;
    cout<<"          :  **欢迎进入计算器加强版系统**      :"<<endl;
    cout<<"          :  **   zly制作必属精品  **          :"<<endl;
    cout<<"      :                                        :"<<endl;
    cout<<"      @----------------------------------------@"<<endl;
    fushu h;
    h.jisuan();
}



猜你喜欢

转载自blog.csdn.net/zzzanj/article/details/80641387