如何编写程序用成员函数形式实现复数类加减法运算重载

如何编写程序用成员函数形式实现复数类加减法运算重载,第1张

正解见下:

#include<iostream>

using namespace std

class complex//复数类声明

{

private:

double real

double image

public:

complex(double r=0.0,double i=0.0)//构造函数

{

real=r

image=i

}

complex operator+(complex c2)//+重载为成员函数

complex operator-(complex c2)//-重载为成员函数

complex operator*(complex c2)//*重载为成员函数

friend complex operator/(complex,complex)///重载为成员函数

bool operator==(complex c2)//==重载为成员函数

void display()

}

complex complex::operator +(complex c2)//重载的实现

{

complex c

c.real=c2.real+real

c.image=c2.image+image

return complex(c.real,c.image)

}

complex complex::operator -(complex c2)//重载的实现

{

complex c

c.real=real-c2.real

c.image=image-c2.image

return complex(c.real,c.image)

}

complex complex::operator *(complex c2)//重载的实现

{

complex c

c.real=c2.real*real

c.image=c2.image*image

return complex(c.real,c.image)

}

complex operator/(complex c1,complex c2)//重载的实现

{

return complex(c1.real/c2.real,c1.image/c2.image)

}

bool complex::operator ==(complex c2)//重载的实现

{

if((real==c2.real)||(image==c2.image))return true

else return false

}

void complex::display()

{

cout<<"("<<real<<","<<image<<")"<<endl

}

void main()

{

complex c1(5.0,4),c2(5.0,4),c3

cout<<"c1="

c1.display()

cout<<"c2="

c2.display()

c3=c1+c2//使用重载运算符完成复数加法

cout<<"c3=c1+c2="

c3.display()

c3=c1-c2//使用重载运算符完成复数减法

cout<<"c3=c1-c2="

c3.display()

c3=c1*c2//使用重载运算符完成复数乘法

cout<<"c3=c1*c2="

c3.display()

c3=c1/c2//使用重载运算符完成复数除法

cout<<"c3=c1/c2="

c3.display()

//使用重载运算符完成两个复数的比较

bool result=(c1==c2)

cout<<"(c1==c2)="<<result<<endl

#include

"stdafx.h"

#include<iostream>

using

namespace

std

class

Complex4

{

private:

double

real

double

imag

public:

Complex4()//默认构造函数

Complex4(double

r)//函数重载

Complex4(double

r,double

i)//函数重载

friend

Complex4

operator

+(Complex4

&c1,Complex4

&c2)//复数的加法函数

friend

Complex4

operator

-(Complex4

&c1,Complex4

&c2)//减法函数

Complex4

operator

*(Complex4

&c1)//乘法函数

friend

istream&

operator

>>(istream

&output,Complex4

&c1)//输入函数的重载

friend

ostream&

operator

<<(ostream&

input,Complex4

&c1)//输出函数的重载

friend

Complex4

operator

-(Complex4

&c1)//复数负数函数

Complex4

operator

-()

operator

double(){return

real}//类型转换函数

Complex4

Qiumo()//求模函数

}

Complex4::Complex4()

{

real=0

imag=0

}//构造函数的实现

Complex4::Complex4(double

r)

{

real=r

imag=0

}//类型转换函数

Complex4::Complex4(double

r,double

i)

{

real=r

imag=i

}//构造函数重载

Complex4

operator

+(Complex4

&c1,Complex4

&c2)

{

Complex4

c

c.real=c1.real+c2.real

c.imag=c1.imag+c2.imag

return

c

}//+符号的重载

Complex4

operator

-(Complex4

&c1,Complex4

&c2)

{

Complex4

c

c.real=c1.real-c2.real

c.imag=c1.imag-c2.imag

return

c

}//减号的重载函数

Complex4

Complex4::operator

*(Complex4

&c1)

{

Complex4

c

c.real=this->real*c1.real+this->imag*c1.imag

c.imag=this->real*c1.imag+this->imag*c1.real

return

c

}//乘法的函数重载

/*Complex4

operator

-(Complex4

&c1)

{

Complex4

c

c.real=-c.real

c.imag=-c.imag

return

c

}//负号的函数重载*/

Complex4

Complex4::operator

-()

{

real=-(this->real)

imag=-(this->imag)

return

*this

}

istream&

operator

>>(istream

&input,Complex4

&c1)

{

cout<<"input

real

part

and

image

part

of

Complex4

number:

"

input>>c1.real>>c1.imag

return

input

}//>>函数重载

ostream&

operator

<<(ostream&

output,Complex4

&c)

{

output<<"("<<c.real

if(c.imag>=0)output<<"+"

output<<c.imag<<"i)"<<endl

return

output

}//<<函数重载

Complex4

Complex4::Qiumo()

{

double

M//表示模

M=sqrt(this->real*this->real+this->imag*this->imag)

return

M

}

int

main()

{

Complex4

c1,c2,c3,c4,c5,c6

double

i,M

cin>>c1>>c2

c3=c1+c2//实现复数的加法

c4=c1*c2//实现复数的乘法

cout<<c1

c1=c1.operator

-()//实现复数取负数

i=2.5+c1//类型的转换实现

c6=2.5+c1

M=c1.Qiumo()

cout<<"c1="<<c1<<"c2="<<c2<<"c3="<<c3<<"c4="<<c4<<"c6="<<c6<<"i="<<i<<endl<<"M="<<M<<endl

return

0

}

用结构体函数计算两个复数的四则运算是一个相对简单的程序。重难点在于理解复数的运算规则,并将其转化为程序代码。

结构体函数是指将结构体作为函数的参数和返回值的函数。在这个程序中,我们可以定义一个结构体来表示复数,包括它的实部和虚部。然后我们可以定义四个结构体函数来分别实现两个复数的加法、减法、乘法和除法。

结论:通过使用结构体函数,我们可以方便地实现复数的四则运算。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12083250.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存