【C++】复数类的四则运算符重载及输入输出重载

题目:
实现一个复数类,要求重载加减乘除及输入输出,输出保留两位小数。分别输入两个复数的实部和虚部,依次输出加减乘除后的结果。

例:

输入:

3 4
7 8

输出:

10.00+12.00i
-4.00-4.00i
-11.00+52.00i
0.47+0.04i

输入:

0 0
5 0

输出 (当虚部为0时,可以不输出)

5
-5
0
0

程序代码:

#include 
#include 
using namespace std;

class ComplexNumber  //定义ComplexNumber复数类
{
	public:
		ComplexNumber(double xx=0.00,double yy=0.00)  //构造函数
		{
			x=xx;
			y=yy;
		}
		ComplexNumber operator+ (ComplexNumber &z);  //声明复数类加法 
		ComplexNumber operator- (ComplexNumber &z);  //声明复数类减法 
		ComplexNumber operator* (ComplexNumber &z);  //声明复数类乘法 
		ComplexNumber operator/ (ComplexNumber &z);  //声明复数类除法 
		friend istream& operator >> (istream &in,ComplexNumber &z);  //声明友元函数,重载输入 
		friend ostream& operator << (ostream &out,const ComplexNumber &z);  //声明友元函数,重载输出 
	private:
		double x,y;
};

ComplexNumber ComplexNumber::operator+ (ComplexNumber &z)  //实现复数类加法 
{
	ComplexNumber t;
	t.x=x+z.x;
	t.y=y+z.y;
	return t;
}

ComplexNumber ComplexNumber::operator- (ComplexNumber &z)   //实现复数类减法 
{
	ComplexNumber t;
	t.x=x-z.x;
	t.y=y-z.y;
	return t;
}

ComplexNumber ComplexNumber::operator* (ComplexNumber &z)  //实现复数类乘法 
{
	ComplexNumber t;
	t.x=(x*z.x)-(y*z.y);
	t.y=(z.y*x)+(y*z.x);
	return t;
}

ComplexNumber ComplexNumber::operator/ (ComplexNumber &z)   //实现复数类除法 
{
	ComplexNumber t;
	t.x=((x*z.x)+(y*z.y)) / ((z.x*z.x)+(z.y*z.y));
	t.y=((y*z.x)-(x*z.y)) / ((z.x*z.x)+(z.y*z.y));
	return t;
}

istream & operator >> (istream &in,ComplexNumber &z)  //实现重载输入 
{
	in>>z.x>>z.y;
	return in;
}

ostream & operator << (ostream &out,const ComplexNumber &z)  //实现重载输出 
{
	if(z.y>0)  //虚部大于0时,输出为复数类,且有加号 
	{
	    out<> cn1 >> cn2;
	std::cout<

你可能感兴趣的:(【C++】复数类的四则运算符重载及输入输出重载)