C++复数运算符重载(+与<<)

来源:互联网 发布:吉他软件finger 编辑:程序博客网 时间:2024/06/08 06:50
/** 程序的版权和版本声明部分:* Copyright (c) 2013, 烟台大学计算机学院* All rights reserved.* 文件名称:test.cpp* 作    者:任子仪* 完成日期:2014年 5月 20日* 版 本 号:v12.1* 输入描述:无* 问题描述:。* 程序输出:* 问题分析:略* 算法设计:略*/#include <iostream>#include <iomanip>using namespace std;class Complex{public:Complex():real(0),imag(0) {}Complex(double r,double i):real(r),imag(i) {}Complex operator+(Complex &);Complex operator+(double &);friend Complex operator+(double&,Complex &);friend ostream& operator << (ostream& output, const Complex& c);private:double real;double imag;};//将程序需要的其他成份写在下面,只提交begin到end部分的代码Complex Complex::operator+(Complex &c){    Complex z;    z.imag=imag+c.imag;    z.real=real+c.real;    return z;}Complex Complex::operator+(double &c){    Complex z;    z.imag=imag;    z.real=real+c;    return z;}Complex operator+(double&a,Complex &c){    Complex z;    z.imag=c.imag;    z.real=c.real+a;    return z;}ostream& operator << (ostream& output, const Complex& c){    if(c.imag>0)    output<<"("<<setiosflags(ios::fixed)<<setprecision(2)<<c.real<<"+"<<setiosflags(ios::fixed)<<setprecision(2)<<c.imag<<"i)"<<endl;    else    output<<"("<<setiosflags(ios::fixed)<<setprecision(2)<<c.real<<setiosflags(ios::fixed)<<setprecision(2)<<c.imag<<"i)"<<endl;    return output;}int main(){//测试复数加复数double real,imag;cin>>real>>imag;Complex c1(real,imag);cin>>real>>imag;Complex c2(real,imag);Complex c3=c1+c2;cout<<"c1+c2=";cout<<c3;//测试复数加实数double d;cin>>real>>imag;cin>>d;c3=Complex(real,imag)+d;cout<<"c1+d=";cout<<c3;//测试实数加复数cin>>d;cin>>real>>imag;c1=Complex(real,imag);c3=d+c1;cout<<"d+c1=";cout<<c3;return 0;}


示例图片:

0 0
原创粉丝点击