第9周项目1——复数类中的运算符重载(续)
来源:互联网 发布:stl源码 编辑:程序博客网 时间:2024/04/30 02:28
/* * Copyright (c) 2015, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:王元阳 * 完成日期:2015 年 5 月 13 日 * 版 本 号: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-(); friend istream& operator >> (istream& input,Complex& c); friend ostream& operator << (ostream& output,const Complex& c); friend Complex operator+(Complex &c1,Complex &c2); friend Complex operator+(double d1,Complex &c2); friend Complex operator+(Complex &c1,double d2); friend Complex operator-(Complex &c1,Complex &c2); friend Complex operator-(double d1,Complex &c2); friend Complex operator-(Complex &c1,double d2); friend Complex operator*(Complex &c1,Complex &c2); friend Complex operator*(double d1,Complex &c2); friend Complex operator*(Complex &c1,double d2); friend Complex operator/(Complex &c1,Complex&c2); friend Complex operator/(double d1,Complex &c2); friend Complex operator/(Complex &c1,double d2);private: double real; double imag;};//下面定义成员函数istream& operator >> (istream& input,Complex& c){ int a,b; char sign,i; do { cout<<"input a complex number(a+bi或a-bi)"; input>>a>>sign>>b>>i; } while(!((sign=='+'||sign=='-')&&i=='i')); c.real=a; c.imag=(sign=='+')?b:-b; return input;}ostream& operator << (ostream& output,const Complex& c){ output<<"("<<c.real; if (c.imag>=0) output<<"+"; output<<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+(double d1,Complex &c2){ Complex c(d1,0); return c+c2;}Complex operator+(Complex &c1,double d2){ Complex c(0,d2); return c1+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-(double d1,Complex &c2){ Complex c(d1,0); return c-c2;}Complex operator-(Complex &c1,double d2){ Complex c(0,d2); return c1-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*(double d1,Complex &c2){ Complex c(d1,0); return c*c2;}Complex operator*(Complex &c1,double d2){ Complex c(0,d2); return c1*c;}Complex operator/(Complex &c1,Complex &c2){ Complex c; c.real=(c1.real*c2.real+c1.imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag); c.imag=(c1.imag*c2.real-c1.real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag); return c;}Complex operator/(double d1,Complex &c2){ Complex c(d1,0); return c/c2;}Complex operator/(Complex &c1,double d2){ Complex c(0,d2); return c1/c;}int main(){ Complex c1,c2,c3; double d=11; cout<<"c1: "<<endl;; cin>>c1; cout<<"c2: "<<endl; cin>>c2; cout<<"c1="<<c1<<endl; cout<<"c2="<<c2<<endl; cout<<"d="<<d<<endl; //cout<<"-c1="<<(-c1); c3=c1+c2; cout<<"c1+c2="<<c3<<endl; cout<<"c1+d="<<(c1+d)<<endl; cout<<"d+c1="<<(d+c1)<<endl; c3=c1-c2; cout<<"c1-c2="<<c3<<endl; cout<<"c1-d="<<(c1-d)<<endl; cout<<"d-c1="<<(d-c1)<<endl; c3=c1*c2; cout<<"c1*c2="<<c3<<endl; cout<<"c1*d="<<(c1*d)<<endl; cout<<"d*c1="<<(d*c1)<<endl; c3=c1/c2; cout<<"c1/c2="<<c3<<endl; cout<<"c1/d="<<(c1/d)<<endl; cout<<"d/c1="<<(d/c1)<<endl; return 0;}
0 0
- 第9周项目1——复数类中的运算符重载(续)
- 第9周项目1复数类中的运算符重载(续)
- 第9周项目1-复数类中的运算符重载(续)
- 第9周项目1-复数类中的运算符重载(续)
- 2015-第9周项目1-复数类中的运算符重载(续)
- 第9周项目1-复数类中的运算符重载(续)
- 第9周项目1-复数类中的运算符重载(续)
- 第12周项目1—实现复数类中的运算符重载 (2)
- 第12周项目1—实现复数类中的运算符重载 (3)
- 第9周项目1 复数类中的运算符重载(续)
- 第8周-项目1-复数类中的运算符重载(续)-++、--、>>、<<
- 第8周项目1-复数类中的运算符重载(续)
- 第9周-运算符重载(二)-复数类中的运算符重载(续)
- 第九周上机实践项目1——复数类中的运算符重载(续)
- 第九周项目1——复数类中的运算符重载(续)
- 第九周项目1——复数类中的运算符重载(续)
- 第12周项目-复数类中的运算符重载
- 第9周项目1复数类的运算符重载续(1)
- lock
- Gson解析复杂的json数据
- 背景建模技术(二):BgsLibrary的框架、背景建模的37种算法性能分析、背景建模技术的挑战
- 微博随便看看
- oc内存管理
- 第9周项目1——复数类中的运算符重载(续)
- 2015年第九周项目二:Time类中的运算符重载(续)(1)
- 第十周上机项目3分数类中的运算符重载
- 第九周(运算符重载分数类)
- APM
- 算法导论 14章 数据结构的扩张
- Android之官方导航栏ActionBar
- 获取本机IP
- Wireshark图解教程(简介、抓包、过滤器)