第九周任务一之定义Complex类中的>运算符的重载

时间:2021-08-31 08:07:34
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称: 输入输出运算符重载
* 作 者: 石丽君
* 完成日期: 2012 年4 月16 日
* 版 本 号:

* 对任务及求解方法的描述部分
* 输入描述:定义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);
friend istream& operator >>(istream&,Complex&);
friend ostream& operator <<(ostream&,Complex&);
void display();
private:
double real;
double imag;
};
//下面定义成员函数
istream& operator >>(istream&input ,Complex&c)
{
char i;

cout<<"please input complex number(a+bi)or(a-bi):";
input>>c.real >>c.imag>>i;

return input;
}
ostream& operator <<(ostream&output,Complex&c)
{
if(c.imag>0)
output<<"("<<c.real<<'+'<<c.imag<<"i)";
else
output<<"("<<c.real<<c.imag<<"i)";
return output;
}

//加法
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=imag*c2.real+real*c2.imag;
return c;

}
//除法
Complex Complex::operator/(Complex &c2)
{
Complex c;
c.real=(real*c2.real+imag*c2.imag)/(real*real+imag*imag);
c.imag=(imag*c2.real-real*c2.imag)/(real*real+imag*imag);
return c;

}
void Complex::display( )
{
cout<<"("<<real<<","<<imag<<"i)"<<endl;
}

int main()
{
Complex c1,c2,c3;
cin>>c1>>c2;
cout<<"c1="<<c1<<endl;
cout<<"c2="<<c2<<endl;
c3=c1+c2;
cout<<"c1+c2="<<c3<<endl;
c3=c1-c2;
cout<<"c1-c2="<<c3<<endl;
c3=c1*c2;
cout<<"c1*c2="<<c3<<endl;
c3=c1/c2;
cout<<"c1/c2="<<c3<<endl;
system("pause");
return 0;
}


#include<iostream>  using namespace std;  class Complex  {  public:   Complex(){real=0;imag=0;}   Complex(double r,double i){real=r;imag=i;}   friend Complex operator+(Complex &c1,Complex &c2);   friend Complex operator-(Complex &c1,Complex &c2);   friend Complex operator*(Complex &c1,Complex &c2);   friend Complex operator/(Complex &c1,Complex &c2); friend istream& operator >>(istream&,Complex&); friend ostream& operator <<(ostream&,Complex&); private:   double real;   double imag;  };  //下面定义成员函数  istream& operator >>(istream&input ,Complex&c){ char i;  cout<<"please input complex number(a+bi)or(a-bi):"; input>>c.real >>c.imag>>i;  return input;}ostream& operator <<(ostream&output,Complex&c){ if(c.imag>0)  output<<"("<<c.real<<'+'<<c.imag<<"i)"; else  output<<"("<<c.real<<c.imag<<"i)"; return output;}//加法      Complex operator+(Complex &c1,Complex &c2)   {     Complex c;     c.real=c1.real+c2.real;     c.imag=c1.imag+c2.imag;     return c;    }    //减法      Complex operator-(Complex &c1,Complex &c2)   {        Complex c;     c.real=c1.real-c2.real;     c.imag=c1.imag-c2.imag;     return c;       }    //乘法     Complex operator*(Complex &c1,Complex &c2)  {     Complex c;     c.real=c1.real*c2.real-c1.imag*c2.imag;     c.imag=c1.imag*c2.real+c1.real*c2.imag;     return c;       }    //除法     Complex operator/(Complex &c1,Complex &c2)   {     Complex c;     c.real=(c1.real*c2.real+c1.imag*c2.imag)/(c1.real*c1.real+c1.imag*c1.imag);     c.imag=(c1.imag*c2.real-c1.real*c2.imag)/(c1.real*c1.real+c1.imag*c1.imag);     return c;       }      int main()  {   Complex c1,c2,c3; cin>>c1>>c2; cout<<"c1="<<c1<<endl;   cout<<"c2="<<c2<<endl;     c3=c1+c2;   cout<<"c1+c2="<<c3<<endl;   c3=c1-c2;   cout<<"c1-c2="<<c3<<endl;   c3=c1*c2;   cout<<"c1*c2="<<c3<<endl;   c3=c1/c2;   cout<<"c1/c2="<<c3<<endl;   system("pause");   return 0;  }  

#include<iostream>  using namespace std;  class Complex  {  public:   Complex(){real=0;imag=0;}   Complex(double r,double i){real=r;imag=i;}   friend Complex operator+(Complex &c1,Complex &c2);   friend Complex operator-(Complex &c1,Complex &c2);   friend Complex operator*(Complex &c1,Complex &c2);   friend Complex operator/(Complex &c1,Complex &c2);   friend Complex operator-(Complex &c1);   friend Complex operator+(double&i,Complex &c2);   friend Complex operator*(Complex &c2,double&i); friend istream& operator >>(istream&,Complex&); friend ostream& operator <<(ostream&,Complex&); private:   double real;   double imag;  };  //下面定义成员函数  istream& operator >>(istream&input ,Complex&c){ char i;  cout<<"please input complex number(a+bi)or(a-bi):"; input>>c.real >>c.imag>>i;  return input;}ostream& operator <<(ostream&output,Complex&c){ if(c.imag>0)  output<<"("<<c.real<<'+'<<c.imag<<"i)"; else  output<<"("<<c.real<<c.imag<<"i)"; return output;}//加法      Complex operator+(Complex &c1,Complex &c2)   {     Complex c;     c.real=c1.real+c2.real;     c.imag=c1.imag+c2.imag;     return c;    }    //减法      Complex operator-(Complex &c1,Complex &c2)   {        Complex c;     c.real=c1.real-c2.real;     c.imag=c1.imag-c2.imag;     return c;       }    //乘法     Complex operator*(Complex &c1,Complex &c2)  {     Complex c;     c.real=c1.real*c2.real-c1.imag*c2.imag;     c.imag=c1.imag*c2.real+c1.real*c2.imag;     return c;       }    //除法     Complex operator/(Complex &c1,Complex &c2)   {     Complex c;     c.real=(c1.real*c2.real+c1.imag*c2.imag)/(c1.real*c1.real+c1.imag*c1.imag);     c.imag=(c1.imag*c2.real-c1.real*c2.imag)/(c1.real*c1.real+c1.imag*c1.imag);     return c;       }   //一目运算  Complex operator-(Complex &c1)  {   Complex c;    c.real=-c1.real;   c.imag=-c1.imag;   return c;  }  Complex operator+(double&i,Complex &c2)  {   Complex c;   c.real=i+c2.real;   c.imag=c2.imag;   return c;  }  Complex operator*(Complex &c2,double&i)  {      Complex c;   c.real=c2.real*i;   c.imag=c2.imag*i;   return c;  }    int main()  {   Complex c1,c2,c3;   double i=2.3;  cin>>c1>>c2; cout<<"c1="<<c1<<" ";    cout<<"c2="<<c2<<endl;   c3=c1+c2;   cout<<"c1+c2="<<c3<<endl;   c3=c1-c2;   cout<<"c1-c2="<<c3<<endl;   c3=c1*c2;   cout<<"c1*c2="<<c3<<endl;   c3=c1/c2;   cout<<"c1/c2="<<c3<<endl;   c3=-c1;   cout<<"-c1="<<c3<<endl;    cout<<"i="<<i<<endl;   c3=c1*i;   cout<<"c1*i="<<c3<<endl;   c3=i+c1;   cout<<"i+c1="<<c3<<endl;   system("pause");   return 0;  }  

第九周任务一之定义Complex类中的>运算符的重载