复数运算类

这两天老师让做一个复数运算类,上机前做了一个。结果我做的跟老师的要求不一样。具体不详细说了,来看代码吧。

  1. 自己做的:
#include<iostream>
using namespace std;
class complex
{
public:
    complex(){real1= 0;imag1=0;real2= 0;imag2=0;oper1='i';oper2='i';} 
    double real1,real2,real3,imag1,imag2,imag3;
    char oper1,oper2,oper3;
    void in()//输入函数
    {
        cout<<"请输入第一个数:";
        cin>>real1>>imag1>>oper1;

        cout<<"请输入第二个数:";
        cin>>real2>>imag2>>oper2;
    }
    void add()//加法
    {
        real3=real1+real2;
        imag3=imag1+imag2;
        if(imag3>0)
            oper3='+';

    }
    void sub()//减法
    {
        real3=real1-real2;
        imag3=imag1-imag2;
        if(imag3>0)
            oper3='+';

    }
    void mul()//乘法
    {
        real3=(real1*real2)-(imag1*imag2);
        imag3=(imag1*real2)+(real1*imag2);
        if(imag3>0)
            oper3='+';
    }
    void div()//除法
    {
        if(real2==0&&imag2==0)
        {
            cout<<"除数不可以是0"<<endl;
        }
        else
        {
            real3=((real1*real2)+(imag1*imag2))/(real2*real2+imag2*imag2);
            imag3=((imag1*real2)-(real1*imag2))/(real2*real2+imag2*imag2);
            if(imag3>0)
            oper3='+';
        }
    }
    void out()//输出函数
    {
        if(real3!=0&&imag3>0)
            cout<<real3<<oper3<<imag3<<"i"<<endl;
        if(real3!=0&&imag3<0)
            cout<<real3<<imag3<<"i"<<endl;
        if(real3==0&&imag3!=0)
            cout<<imag3<<"i"<<endl;
        if(real3!=0&&imag3==0)
            cout<<real3<<endl;
        if(real3==0&&imag3==0)
            cout<<"0"<<endl;
    }
};

int main()
{
    complex a;
    int num;
    cout<<"1--加法,2--减法,3--乘法,4--除法,0--退出"<<endl;
    while(cin>>num)
    {
        if(num==1)
        {a.in();a.add();a.out();}
        if(num==2)
        {a.in();a.sub();a.out();}
        if(num==3)
        {a.in();a.mul();a.out();}
        if(num==4)
        {a.in();a.div();a.out();}
        if(num==0)
            break;
        cout<<"1--加法,2--减法,3--乘法,4--除法,0--退出"<<endl;
    }
}

2.老师要求:

#include<iostream>
using namespace std;
class complex
{
public:
    double real,imag;
    complex(){real= 0;imag=0;} //构造函数1
    complex(double real,double imag)//构造函数2
    {
        this->real=real;
        this->imag=imag;
    }
    void set(double real,double imag)
    {
        this->real=real;
        this->imag=imag;
    }
    void print()//输出函数
    {

        if(imag>0)
            cout<<real<<"+"<<imag<<"i"<<endl;
        if(imag<0)
            cout<<real<<imag<<"i"<<endl;
        if(imag==0)
            cout<<real<<endl;
    }

};complex sub(complex c1,complex c2)//减法
    {
        complex c3;
        c3.real=c1.real-c2.real;
        c3.imag=c1.imag-c2.imag;
        return c3;
    }
complex add(complex c1,complex c2)//加法
    {
        complex c3;
        c3.real=c1.real+c2.real;
        c3.imag=c1.imag+c2.imag;
        return c3;
    }
int main()
{
    complex c1(2,4);
    complex c2,c3;
    c2.set(2,-4);
    c1.print(); 
    c2.print();
    c3.print();
    c3=add(c1,c2);  c3.print();
    c3=sub(c1,c2);  c3.print();

}

总结:老师要求的有关于构造函数的知识,稍微高端点==。自己做的有些缺点–不能直接输入123之类的实数,都待改进。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值