呼啦72637 2021-07-10 22:46 采纳率: 100%
浏览 308
已采纳

C++如何实现复数类矩阵的加减乘除

怎么实现复数矩阵的加减乘除,共轭转置,利用函数重载

  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2021-07-10 23:23
    关注
    #include <iostream>
    #include<cstdio>
    using namespace std;
    class Complex
    {
    public:
        Complex(double r = 0,double i = 0)//构造函数
        {
            real=r;
            imag=i;
        }
        ~Complex()
        {
    
        }
        friend Complex operator+(Complex &c1,Complex &c2);   //重载为友员函数
        friend Complex operator*(Complex &c1,Complex &c2);
        Complex operator -(Complex&);//重载为成员函数
        Complex operator /(Complex&);
        friend istream& operator>>(istream&, Complex&);
        friend ostream& operator<<(ostream&, Complex&);
        friend bool operator==(Complex &c1,Complex &c2);
        friend bool operator!=(Complex &c1,Complex &c2);
        void display( );
    private:
        double real;
        double imag;
    };
    Complex operator + (Complex &c1,Complex &c2)
    {
        return Complex(c1.real+c2.real, c1.imag+c2.imag);
    }
    Complex operator * (Complex &c1,Complex &c2)
    {
        return Complex(c1.real*c2.real, c1.imag*c2.imag);
    }
    Complex Complex::operator-(Complex &c)
    {
        return Complex(real-c.real,imag-c.imag);
    }
    Complex Complex::operator/(Complex &c)
    {
        return Complex(real/c.real,imag/c.imag);
    }
    
    istream& operator>>( istream& in, Complex &c )
    {
        in >> c.real >> c.imag;
        return in;
    }
    ostream& operator<<( ostream& out, Complex &c )
    {
        out << c.real << "+" << c.imag << "i\n";
        return  out;
    }
    
    bool operator == (Complex &c1,Complex &c2)
    {
        if(c1.real==c2.real&&c1.imag==c2.imag)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    bool operator != (Complex &c1,Complex &c2)
    {
        if(c1.real!=c2.real||c1.imag!=c2.imag)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    void Complex::display( )
    {
        cout<<real<< "+" <<imag<<"i\n"<<endl;
    }
    int Menu()
    {
        int t;
        cout << endl;
        cout<<"=================="<<endl;
        cout<<"1.输入复数"<<endl;
        cout<<"2.查看输入的复数"<<endl;
        cout<<"3.复数相加"<<endl;
        cout<<"4.复数相减"<<endl;
        cout<<"5.复数相乘"<<endl;
        cout<<"6.复数相除"<<endl;
        cout<<"7.输出结果"<<endl;
        cout<<"0.退出"<<endl;
        cout<<"=================="<<endl;
        cout<<"请选择(0-7):";
        cin>>t;
        return t;
    }
    
    int main()
    {
        int iChoice =1;
        Complex c1,c2,c3,c4;
        while (iChoice!=0)
        {
            iChoice = Menu();
            switch (iChoice)
            {
            case 1:
            {
                cout<<"请输入一个复数:"<<endl;
                cin>>c1;
                getchar();
                break;
            }
            case 2:
            {
                //c1.display();
                cout<<c1;
                break;
            }
            case 3:
            {
                cout<<"原有的复数:"<<endl;
                cout<<c1;
                cout<<"请再输入一个复数相加:"<<endl;
                cin>>c2;
                getchar();
                c3=c1+c2;
                break;
            }
            case 4:
            {
                cout<<"原有的复数:"<<endl;
                cout<<c1;
                cout<<"请再输入一个复数相减:"<<endl;
                cin>>c2;
                getchar();
                c3=c1-c2;
                break;
            }
            case 5:
            {
                cout<<"原有的复数:"<<endl;
                cout<<c1;
                cout<<"请再输入一个复数相乘:"<<endl;
                cin>>c2;
                getchar();
                c3=c1*c2;
                break;
    
            }
            case 6:
            {
                cout<<"原有的复数:"<<endl;
                cout<<c1;
                cout<<"请再输入一个复数相除:"<<endl;
                cin>>c2;
                getchar();
                c3=c1/c2;
                break;
            }
            case 7:
            {
                cout<<"运算的结果:"<<endl;
                cout<<c3;
                break;
            }
            case 0:
            {
                break;
    
            }
            }
        }
    
    
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已采纳回答 7月10日
  • 创建了问题 7月10日

悬赏问题

  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法