C++程序设计实验报告(五十七)---第九周任务1

来源:互联网 发布:合并报表知乎 编辑:程序博客网 时间:2024/06/05 07:01

/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2012, 烟台大学计算机学院学生 
* All rights reserved.
* 文件名称:流运算符重载运算符(Complex类)

* 作 者: 刘镇
* 完成日期: 2012 年 4 月 15 日
* 版 本 号: 1.053
* 对任务及求解方法的描述部分
* 输入描述: 复数

* 问题描述: 复数流运算符重载

* 程序输出: ......

* 程序头部的注释结束
*/

 

#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, Complex &c2);  friend Complex operator + (Complex &c, const double &d);  friend Complex operator + (const double &d, Complex &c);  friend Complex operator - (Complex &c, const double &d);  friend Complex operator - (const double &d, Complex &c);  friend Complex operator * (Complex &c, const double &d);  friend Complex operator * (const double &d, Complex &c);  friend Complex operator / (Complex &c, const double &d);  friend Complex operator / (const double &d, Complex &c);  friend Complex operator - (Complex &c);  friend ostream & operator << (ostream&, Complex&);friend istream & operator >> (istream&, Complex&);private:  double real;  double imag;  };  //下面定义成员函数   Complex operator - (Complex &c)  {  return Complex(0 - c.real, c.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 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);  }istream &operator >> (istream &input, Complex &c){char c1, c2;cout<< "请输入复数:(格式:5-3i)" << endl;while(1){input >> c.real >> c1 >> c.imag >> c2;if(c1 == '-'){c.imag = - c.imag;}if(c2 == 'i' && c1 == '+' || c1 == '-'){break;}else{cout << "输入格式错误!重新输入:";}}return input;}ostream &operator << (ostream &output, Complex &c){output << c.real;if(c.imag >= 0){output << "+";}output << c.imag << "i" << endl; return output;}  Complex operator + (const double &d,Complex &c)  {  return Complex(d + c.real, c.imag);  }  Complex operator+ (Complex &c, const double &d)  {   return Complex(d + c.real, c.imag);  }  Complex operator- (Complex &c, const double &d)  {   return Complex(d - c.real, c.imag);  }  Complex operator- (const double &d, Complex &c)  {   return Complex(d - c.real, c.imag);  }  Complex operator* (Complex &c, const double &d)  {   return Complex(d * c.real, c.imag);  }  Complex operator* (const double &d, Complex &c)  {   return Complex(d * c.real, c.imag);  }  Complex operator/ (Complex &c, const double &d)  {   return Complex(d / c.real, c.imag);  }  Complex operator/ (const double &d, Complex &c)  {   return Complex(d / c.real, c.imag);  }  int main()  {  Complex c1, c2, c3; cin >> c1 >> c2;cout << "c1=" << c1;cout << "c2=" << c2;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;  c3 = c1 * 4;  cout << "c1 * 4 =" << c3;c3 = c1 / 3;  cout << "c1 / 3 =" << c3;c3 = 4 + c2;  cout << "4 + c2 =" << c3;c3 = 4 - c2;  cout << "4 - c2 =" << c3;c3 = - c1;  cout << "- c1 =" << c3;  system("pause");  return 0;  }  

 

运行结果:

 

 

对于流插入的的处理要复杂得多。