您的位置:首页 > 编程语言 > C语言/C++

C++primer plus第六版课后编程练习答案11.7

2015-12-01 17:59 417 查看
头文件
#ifndef COMPLEX0_H_
#define CONPLEX0_H_

#include<iostream>

class complex
{
private:
double real;
double imaginary;
public:
complex(){real=imaginary=0;}
complex(double r,double i);

complex operator+(const complex &c)const;//
complex operator-(const complex &c)const;
complex operator*(const complex &c)const;
complex operator*(const double x)const;
complex operator~()const;
friend complex operator*(double n,const complex &c);//两个乘法重载,使2*c和c*2都能运行

friend std::ostream &operator<<(std::ostream &os,const complex &c);//<<不是成员函数,不能再后面加const
friend std::istream &operator>>(std::istream &is,complex &c);

};

#endif
#include<iostream>
#include "complex0.h"

using namespace std;

complex::complex(double r,double i)
{
real=r;
imaginary=i;
}

complex complex::operator *(const complex &c)const
{
return complex((real*c.real-imaginary*c.imaginary),(real*c.imaginary+c.real*imaginary));
}

complex complex::operator+(const complex &c)const
{
return complex((real+c.real),(imaginary+c.imaginary));
}

complex complex::operator-(const complex &c)const
{
return complex((real-c.real),(imaginary-c.imaginary));
}

complex complex::operator*(const double x)const
{
return complex((real*x),(imaginary*x));
}

complex complex::operator~()const
{
return complex(real,-imaginary);
}

complex operator*(double n,const complex &c)
{
return c*n;
}

std::ostream &operator<<(std::ostream &os,const complex &c)//<<不是成员函数,不能再后面加const
{
os<<"("<<c.real<<","<<c.imaginary<<"i)";
return os;
}

std::istream &operator>>(std::istream &is,complex &c)
{
cout<<"请输入实部:";
if(is>>c.real)
{
cout<<"请输入虚部:";
is>>c.imaginary;
}
return is;
}

#include<iostream>
#include "complex0.h"

using namespace std;

int main()
{
complex a(3.0,4.0);
complex c;
cout<<"Enter a complex number(q to quit):\n";
while(cin>>c)
{
cout<<"c is "<<c<<'\n';
cout<<"complex conjugate is "<<~c<<'\n';
cout<<"a is "<<a<<'\n';
cout<<"a+c is "<<a+c<<'\n';
cout<<"a-c is "<<a-c<<'\n';
cout<<"a*c is "<<a*c<<'\n';
cout<<"2*c is "<<2*c<<'\n';
cout<<"Enter a complex numbet(q to quit):\n";
}
cout<<"Done!\n";
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: