第九周项目一~~~一目二目运算符重载和<<与>>的重载

来源:互联网 发布:js代码不显示 编辑:程序博客网 时间:2024/05/22 00:45
/** Copyright (c) 2013, 烟台大学计算机学院* All rights reserved.* 作    者:纪丽娜* 完成日期:2014 年 4 月21 日* 版 本 号:v1.0* 问题描述:(1)再定义一目运算符 -,-c相当于0-c。(2)定义Complex类中的<<和>>运算符的重载,    实现输入和输出,改造原程序中对运算结果显示方式,    使程序读起来更自然。*/#include <iostream>using namespace std;class Complex{public:    Complex()    {        real=0;        imag=0;    }    Complex(double r,double i)    {        real=r;        imag=i;    }    Complex operator+(Complex &c2);    Complex operator-(Complex &c2);    Complex operator*(Complex &c2);    Complex operator/(Complex &c2);    //一目运算符    Complex operator-();    //c+c1    friend Complex operator+(double c,Complex &c1);    friend Complex operator-(double c,Complex &c1);    friend Complex operator*(double c,Complex &c1);    friend Complex operator/(double c,Complex &c1);    //c1+c    friend Complex operator+(Complex &c2,double c);    friend Complex operator-(Complex &c2,double c);    friend Complex operator*(Complex &c2,double c);    friend Complex operator/(Complex &c2,double c);    friend ostream & operator<<(ostream & output,Complex &c);    friend istream & operator>>(istream & input,Complex &c);private:    double real;    double imag;};//下面定义成员函数//一目Complex Complex::operator-(){    return(0-*this);}//二目运算符Complex Complex::operator+(Complex &c2){    Complex c;    c.real=real+c2.real;    c.imag=imag+c2.imag;    return c;}Complex Complex::operator-(Complex &c2){    Complex c;    c.real=real-c2.real;    c.imag=imag-c2.imag;    return c;}Complex Complex::operator*(Complex &c2){    Complex c;    c.real=(real*c2.real-imag*c2.imag);    c.imag=(real*c2.imag+imag*c2.real);    return c;}Complex Complex::operator/(Complex &c2){    Complex c;    c.real=(real*c2.real+imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);    c.imag=(imag*c2.real-real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);    return c;}//c+c1Complex operator+(double c,Complex &c1){    return  Complex(c+c1.real,c1.imag);}Complex operator-(double c,Complex &c1){    return  Complex(c-c1.real,c1.imag);}Complex operator*(double c,Complex &c1){    return  Complex(c*c1.real,c*c1.imag);}Complex operator/(double c,Complex &c1){    Complex c2;    c2.real=(c*c1.real)/(c1.real*c1.real+c1.imag*c1.imag);    c2.imag=-1*((c*c1.imag)/(c1.real*c1.real+c1.imag*c1.imag));    return c2;}//c1+cComplex operator+(Complex &c2,double c){    return  Complex(c2.real+c,c2.imag);}Complex operator-(Complex &c2,double c){    return  Complex(c2.real-c,c2.imag);}Complex operator*(Complex &c2,double c){    return  Complex(c*c2.real,c*c2.imag);}Complex operator/(Complex &c2,double c){    return  Complex(c2.real/c,c2.imag/c);}//输出ostream & operator<<(ostream & output,Complex &c){     if(c.real==0)     {output<<c.imag<<"i"<<endl;     }else    {        if(c.imag<0)     {output<<c.real<<c.imag<<"i"<<endl;     }else if(c.imag==0)     {output<<c.real<<endl;     }else     {output<<c.real<<"+"<<c.imag<<"i"<<endl;}    }    return output;}//输入istream & operator>>(istream & input,Complex &c){    cout<<"input real part and imaginary part of complex numble:";    input>>c.real>>c.imag;    return input;}//下面定义用于测试的main()函数int main(){    Complex c1,c2,c3;    cin>>c1>>c2;    double c;    cout<<"c1="<<c1;    cout<<"c2="<<c2;    c3=-c1;    cout<<"-c1="<<c3;//不能直接输出-c1无法识别先赋值再输出!    c3=-c2;    cout<<"-c2="<<c3;    c3=c1+c2;    cout<<"c1+c2="<<c3;    c3=c1-c2;    cout<<"c1-c2="<<c3;    c3=c1*c2;    cout<<"c1*c2="<<c3;    c3=c1/c2;    cout<<"c1/c2="<<c3;    cout<<"请输入一个double类型的数据与c1进行运算:"<<endl;    cin>>c;    c3=c+c1;    cout<<"c+c1="<<c3;    c3=c-c1;    cout<<"c-c1="<<c3;    c3=c*c1;    cout<<"c*c1="<<c3;    c3=c/c1;    cout<<"c/c1="<<c3;    cout<<"请输入一个double类型的数据与c2进行运算:"<<endl;    cin>>c;    c3=c2+c;    cout<<"c2+c="<<c3;    c3=c2-c;    cout<<"c2-c="<<c3;    c3=c2*c;    cout<<"c2*c="<<c3;    c3=c2/c;    cout<<"c2/c="<<c3;    return 0;}


 

心得:喵喵喵喵。。。。。

           要回家了啊,

        内心有点激动\(≧▽≦)/

0 0
原创粉丝点击