第9周任务1(Complex类中的<<和>>运算符重载实现时间的输入和输出)

来源:互联网 发布:json格式数据 编辑:程序博客网 时间:2024/06/06 02:51
/* (程序头部注释开始)* 程序的版权和版本声明部分* Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved.* 文件名称:                              * 作    者:   臧鹏               * 完成日期:   2012   年  4 月 15  日* 版 本 号:          * 对任务及求解方法的描述部分* 输入描述:* 问题描述:在第8周任务1的基础上,定义Complex类中的<<和>>运算符的重载,实现输入和输出,改造原程序中队运算结果的显示方式,使程序更自然。* 程序输出: * 程序头部的注释结束*/#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,const double &d);  friend Complex operator-(Complex &c1,const double &d);  friend Complex operator*(Complex &c1,const double &d);  friend Complex operator/(Complex &c1,const double &d);  friend Complex operator+(const double &d,Complex &c1);  friend Complex operator-(const double &d,Complex &c1);  friend Complex operator*(const double &d,Complex &c1);  friend Complex operator/(const double &d,Complex &c1);  friend Complex operator-(Complex &c);//一目运算符  //void display();friend ostream & operator << (ostream&, Complex&);//<<重载  friend istream & operator >> (istream&, Complex&); //>>重载private:  double real;  double imag;  };  //下面定义成员函数  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,const double &d)//复数加double  {  Complex c;  c.real = c1.real +d;  c.imag = c1.imag ;  return c;  }  Complex operator+(const double &d,Complex &c1)//double加复数  {  Complex c;  c.real = c1.real +d;  c.imag = c1.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,const double &d)//复数减double  {  Complex c;  c.real = c1.real -d;  c.imag = c1.imag ;  return c;  }  Complex operator-(const double &d,Complex &c1)//double减复数  {  Complex c;  c.real =d- c1.real ;  c.imag = -c1.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,const double &d)//复数乘double  {  Complex c;  c.real=c1.real*d-c1.imag*0;      c.imag=c1.imag*d+c1.real*0;   return c;  }  Complex operator*(const double &d,Complex &c1)//double乘复数  {  Complex c;  c.real=c1.real*d-c1.imag*0;      c.imag=c1.imag*d+c1.real*0;   return c;  }  Complex operator/(Complex &c1,Complex &c2)//复数除法  {  Complex c;  c.real=(c1.real*c2.real+c2.imag*c1.imag)/(c2.real*c2.real+c2.imag*c2.imag);      c.imag=(c2.real*c1.imag-c2.imag*c1.real)/(c2.real*c2.real+c2.imag*c2.imag);   return c;  }  Complex operator/(Complex &c1,const double &d)//复数除double  {  Complex c;  c.real=(c1.real*d+0*c1.imag)/(d*d);      c.imag=(d*c1.imag-0*c1.real)/(d*d);   return c;  }  Complex operator/(const double &d,Complex &c1)//double除复数  {  Complex c;  c.real=(c1.real*d+0*c1.imag)/(c1.real*c1.real+c1.imag*c1.imag);       c.imag=(0*c1.real-d*c1.imag)/(c1.real*c1.real+c1.imag*c1.imag);   return c;  }  /*void Complex::display()  {  cout<<"("<<real<<","<<imag<<"i)"<<endl;  cout<<endl;  }  */Complex operator-(Complex &c1)  {  Complex c;  c.real = -c1.real;  c.imag = -c1.imag;  return c;  }istream & operator >> (istream&in, Complex&c)//<<重载 {  char a;  cout<< "请输入复数:(格式:x:x)" << endl;  while(1)  {  cin >> c.real >> a >> c.imag ;  if(a !=':')  {//cin >> c.real >> a >> c.imag ;cout << "输入格式不正确,重新输入:";continue;}  else  break;}  return cin; }ostream & operator << (ostream&out, Complex&c) //>>重载{  cout << c.real;  if(c.imag >= 0)  {  cout << "+";  }  cout << c.imag << "i" << endl;   return cout;  }    int main()  {  Complex c1,c2,c3;cout<<"请输入c1";cin>>c1;cout<<"请输入c2";cin>>c2;cout<<"c1 ="<<c1;cout<<"c2 ="<<c2;c3=c1+c2;  cout<<"c1+c2=";  cout<<c3;  c3=c1-c2;  cout<<"c1-c2=";  cout<<c3;  c3=c1*c2;  cout<<"c1*c2=";  cout<<c3;c3=c1/c2;  cout<<"c1/c2=";  cout<<c3;c3=c1+6.38;  cout<<"c1+6.38=";  cout<<c3;c3=c1-6.38;  cout<<"c1-6.38=";  cout<<c3;c3=c1*6.38;  cout<<"c1*6.38=";  cout<<c3;c3=c1/6.38;  cout<<"c1/6.38=";  cout<<c3;  c3=6.38+c1;  cout<<"6.38+c1=";  cout<<c3;  c3=6.38-c1;  cout<<"6.38-c1=";  cout<<c3; c3=6.38*c1;  cout<<"6.38*c1=";  cout<<c3;c3=6.38/c1;  cout<<"6.38/c1=";  cout<<c3;  c3 = -c2;  cout<<"-c2=";  cout<<c3;system("pause");  return 0;  }  

原创粉丝点击