第九周项目一~~~一目二目运算符重载和<<与>>的重载
来源:互联网 发布: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
- 第九周项目一~~~一目二目运算符重载和<<与>>的重载
- 第九周-项目一运算符重载
- 2014-第九周项目一----<<,>>的运算符重载
- 第九周项目一 复数类的运算符重载
- 第九周 项目一:定义复数类的<<和>>运算符的重载
- 第九周 项目1--定义一目运算符-和Complex中的<< >>的重载
- 第九周项目一----实现复数类运算符重载
- 第九周项目3-分数类的运算符重载
- 第九周-项目3-分数类的运算符重载
- 第九周任务一 复数 输入输出运算符的重载
- 第九周 项目4 一维数组的运算符重载
- 第九周项目一-复数类的中的运算符重载(续)
- 第九周任务一:定义Complex类中的<<和>>运算符的重载
- 第九周实验报告(任务一)【Complex类中《和》运算符的重载】
- 项目一运算符重载《和》的体验
- 第九周项目一——Complex类(利用输入输出运算符重载)
- 第九周(项目一)——实现复数类中的运算符重载。
- 第九周 项目一:复数类中的运算符重载(续)
- 垂悬职责,野指针,智能指针
- Spring MVC 框架
- 关于TOAD使用instantclient的设置
- android Handle
- HTML5资源教程
- 第九周项目一~~~一目二目运算符重载和<<与>>的重载
- js去字符串空格(包括去前后空格和中间空格)
- C语言不定参数函数实现
- Mysql date、datetime、timestamp 区别和联系
- java编译挨包
- IE6/IE7下float:right的导致元素换行显示
- Nosql Mongodb之旅(3)
- 白盒子测试方法
- java通过反射获取List中的泛型