定义一个复数类 可以两者求加法(只要加法) C++ 不使用重载

定义一个复数类 可以两者求加法(只要加法) C++ 不使用重载,第1张

我给你加了类complex的定义,可以直接运行

#include<iostream>

using namespace std;

class complex

{

public:

void show();

complex(int a=0,int b=0)

{

R=a;

I=b;

}

complex add(complex);

private:

int R;

int I;

};

complex complex::add(complex s)//////////////////////////add函数

{

R+=sR;

I+=sI;

return complex(R,I);

}

void complex::show()

{

if(I>0)

cout<<R<<"+"<<I<<"i"<<endl;

else if (I==0)

cout<<R<<endl;

else

cout<<R<<"-"<<I<<"i"<<endl;

}//这个只是show函数,类里面的私有数据成员就是 R 和 I 。

int main(int argc, char argv[])

{

complex a (3,4);

complex b (5,6);

complex c;

c=aadd(b); //c=a+b 我问的关键就是在这个位置,这个aadd(b)实现加法,并且能用等号给c赋值

cshow();

return 0;

}

1、加法法则

复数的加法按照以下规定的法则进行:设z1=a+bi,z2=c+di是任意两个复数

则它们的和是 (a+bi)+(c+di)=(a+c)+(b+d)i。

两个复数的和依然是复数,它的实部是原来两个复数实部的和,它的虚部是原来两个虚部的和。

2、减法法则

复数的减法按照以下规定的法则进行:设z1=a+bi,z2=c+di是任意两个复数,

则它们的差是 (a+bi)-(c+di)=(a-c)+(b-d)i。

两个复数的差依然是复数,它的实部是原来两个复数实部的差,它的虚部是原来两个虚部的差。

3、乘法法则

规定复数的乘法按照以下的法则进行:

设z1=a+bi,z2=c+di(a、b、c、d∈R)是任意两个复数,那么它们的积(a+bi)(c+di)=(ac-bd)+(bc+ad)i。

其实就是把两个复数相乘,类似两个多项式相乘,展开得: ac+adi+bci+bdi2,因为i2=-1,所以结果是(ac-bd)+(bc+ad)i 。两个复数的积仍然是一个复数。

4、除法法则

复数除法定义:满足(c+di)(x+yi)=(a+bi)的复数x+yi(x,y∈R)叫复数a+bi除以复数c+di的商。

运算方法:可以把除法换算成乘法做,在分子分母同时乘上分母的共轭。所谓共轭你可以理解为加减号的变换,互为共轭的两个复数相乘是个实常数。

扩展资料

复数的加法就是自变量对应的平面整体平移,复数的乘法就是平面整体旋转和伸缩,旋转量和放大缩小量恰好是这个复数对应向量的夹角和长度。

二维平移和缩放是一维左右平移伸缩的扩展,旋转是一个至少要二维才能明显的特征,限制在一维上,只剩下旋转0度或者旋转180度,对应于一维导数正负值(小线段是否反向)。

参考资料来源:百度百科-复数运算法则

#include<iostream>

using namespace std;

/

1同一个运算符可以代表多个不同的功能,编译系统是根据 *** 作的数据来判别该执行具体哪一个功能的

/

class complex

{

public:

 complex(){ real = 0; imag = 0; } //有参和无参的构造函数

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

 //当运算符重载为类的成员函数时的时候,函数的参数的个数要比原来的 *** 作数少一个(后置“++”、“-”除外),因为成员函数都是通过该类的某个对象来访问的,成员函数中有一隐含的参数this指针,this指针

 //指向当前的对象,而当前的对象本身就是其中的一个 *** 作数。

 //当运算符重载为友元函数的时候,参数的个数与原来的 *** 作数目是一样的

 complex operator+(complex &c2);//运算符的重载。因为本身的‘+’只能是对基本类型数据进行 *** 作,现在想要对复数类也进行 *** 作。那么必须要重载,重新定义其为我们需要的功能

 complex operator-(complex &c2);

 complex operator(complex &c2);

 complex operator/(complex &c2);

 complex operator+(int &i);

 complex operator-(int &i);

 complex operator(int &i);

 complex operator/(int &i);

 void display();

private:

 double real;

 double imag;

};

//不明白为什么这里的return不能像后面复数与整数相加时的return

//解答:还不都是一样的,只不过是因为前面涉及到了实部和虚部 *** 作,因此重新构造一个复数类的对象会使程序更加明了。

//后面只是用到了实部,因此不需要浪费内存空间,重新申请一个新的复数类的对象(乘除除外)。程序简化为直接创建一个临时的无名对象作为返回值,程序的运行效率更高

//复数和复数的 *** 作运算

complex complex::operator+(complex &c2)

{

 complex c;

 creal = real + c2real;

 cimag = imag + c2imag;

 return c;

}

complex complex::operator-(complex &c2)

{

 complex c;

 creal = real - c2real;

 cimag = imag - c2imag;

 return c;

}

complex complex::operator (complex &c2)

{

 complex c;

 creal = realc2real - imagc2imag;

 cimag = imagc2real + realc2imag;

 return c;

}

complex complex::operator / (complex &c2)

{

 complex c;

 creal = (realc2real + imagc2imag) / (c2realc2real + c2imagc2imag);

 cimag = (imagc2real - realc2imag) / (c2realc2real + c2imagc2imag);

 return c;

}

//复数与整数之间的 *** 作

complex complex::operator +(int &i)

{

 return complex(real + i, imag);

}

complex complex::operator -(int &i)

{

 return complex(real - i, imag);

}

complex complex::operator (int &i)

{

 return complex(reali, imagi);

}

complex complex::operator /(int &i)

{

 return complex(real / i, imag / i);

}

void complex::display()

{

 cout << "(" << real << "," << imag << "i)" << endl;

}

int main()

{

 complex c1(1, 2), c2(3, 4), c3;

 int i = 5;

 cout << "c1=";

 c1display();

 cout << "c2=";

 c2display();

 c3 = c1 + c2;

 cout << "c1+c2=";

 c3display();

 c3 = c1 - c2;

 cout << "c1-c2=";

 c3display();

 c3 = c1c2;

 cout << "c1c2=";

 c3display();

 c3 = c1 / c2;

 cout << "c1/c2=";

 c3display();

 cout << "i=" << i << endl;

 c3 = c1 + i;

 cout << "c1+i=";

 c3display();

 c3 = c1 - i;

 cout << "c1-i=";

 c3display();

 c3 = c1i;

 cout << "c1i=";

 c3display();

 c3 = c1 / i;

 cout << "c1/i=";

 c3display();

 return 0;

以上就是关于定义一个复数类 可以两者求加法(只要加法) C++ 不使用重载全部的内容,包括:定义一个复数类 可以两者求加法(只要加法) C++ 不使用重载、复数的运算公式大全、使用C++定义一个复数类 complex,用成员函数方式定义复数类对象的加减运算等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/zz/9774453.html

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

发表评论

登录后才能评论

评论列表(0条)

保存