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

头文件
#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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值