⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 complex.cpp

📁 本程序新建complex类
💻 CPP
字号:
#include "stdio.h"
#include "iostream.h"
#include "math.h"


//定义complex类
class complex  
{
	friend ostream &operator<<(ostream &,const complex &);
	friend istream &operator>>(istream &, complex &);

public:

	complex(double=0,double=0);
	setcomplex(double=0,double=0);

	complex operator+(const complex &)const;
	complex operator-(const complex &)const;
	complex operator*(const complex &)const;
	complex operator/(const complex &)const;

	complex &operator=(const complex &);

	int operator==(const complex &);
	int operator!=(const complex &);

private:
	double real;
	double imaginary;
};

//complex类的相关成员函数的定义,重载
complex::complex(double r,double imag)
{
	real=r;
	imaginary=imag;
}

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

//重载复数加法“+”运算
complex complex::operator+(const complex &second)const
{
	complex sum;
	sum.real=real+second.real;
	sum.imaginary=imaginary+second.imaginary;
	return sum;
}

//重载复数减法“-”运算
complex complex::operator-(const complex &second)const
{
	complex diff;
	diff.real=real-second.real;
	diff.imaginary=imaginary-second.imaginary;
	return diff;
}

//重载复数乘法“*”运算
complex complex::operator*(const complex &second)const
{
	complex mult;
	mult.real=real*second.real-imaginary*second.imaginary;
	mult.imaginary=imaginary*second.real+real*second.imaginary;
	return mult;
}

//重载复数除法“/运算
complex complex::operator/(const complex &second)const
{
	complex div;
	if(second.imaginary==0 &&second.real==0) 
	{
		cout<<"The Div does not exist !!";
		return 0;
	}
	else
	{
		div.real=(real*second.real+imaginary*second.imaginary)/(pow(second.real,2)+pow(second.imaginary,2));
		div.imaginary=(imaginary*second.real-real*second.imaginary)/(pow(second.real,2)+pow(second.imaginary,2));
		return div;
	}
}

//重载复数赋值“=”运算符
complex& complex::operator=(const complex &right)
{
	real=right.real;
	imaginary=right.imaginary;
	return *this;
}

//重载复数“==”运算     当实部和虚部的差值分别小于0.00001时,认为两复数相等,否则,不相等。
int complex::operator==(const complex &right)
{
	if(fabs(real-right.real)<0.0001 && fabs(imaginary-right.imaginary<0.0001))
		return 1;
	else 
		return 0;
}

//重载复数“!=”运算      当实部和虚部的差值分别小于0.00001时,认为两复数相等,否则,不相等。
int complex::operator!=(const complex &right)
{
	if(fabs(real-right.real)<0.0001 && fabs(imaginary-right.imaginary<0.0001))
		return 0;
	else 
		return 1;
}

//重载复数流输出运算符
ostream &operator<<(ostream &output,const complex &comp)
{
	output<<comp.real<<((comp.imaginary<0)?"-":"+")<<fabs(comp.imaginary)<<"i";
	return output;
}

//重载复数流输入运算符
istream &operator>>(istream &input,complex &comp)
{
	int sign=0;
	cin>>comp.real>>comp.imaginary;
	input.ignore();
	if(sign=='-') comp.imaginary=-comp.imaginary;
	return input;
}



// 
//  main 函数
//
#include "iostream.h"
int main(int argc, char* argv[])
{
	complex comp1,comp2;

    //   输入两个复数 ,以 a+bi 的形式
	cout<<"\nPlease input the two complex (input type: a+bi Or a-bi):\n\n"<<"First:  ";
	cin>>comp1;

	cout<<"\nSecond:  ";
	cin>>comp2;

	complex sum,minus,mult,div;//  声明复数 和,差,积,商

	sum=comp1+comp2;			//复数加法"+"
	minus=comp1-comp2;			//复数减法"-"
	mult=comp1*comp2;			//复数乘法"*"
	div=comp1/comp2;			//复数乘法"*"

	cout<<"\n和为 :"<<sum<<"\n"
		<<"差为 :"<<minus<<"\n"
		<<"积为 :"<<mult<<"\n"
		<<"商为 :"<<div<<"\n";

	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -