使用方法:
1、利用计算器进行复数计算必须要用计算器的度,按DRG 键,使计算器显示窗中要有“DEG”标致。
2、让计算器进入复数运算状态,分别按2ndF和CPLX,显示窗中有“CPLX”标致。
3、表示计算器只能进行复数的运算,而进行其它计算则是无效的。取消则重复进行即可。进行复数的加减乘除运算时计算器必须处于复数运算状态。
我的有重载+-/,楼上的没有,只是复制过来的,那个是例子囧
#include
using
namespace
std;
class
op
{
public:
op(double,double);
op
operator+(op
&o);
op
operator-(op
&o);
op
operator(op
&o);
op
operator/(op
&o);
void
display();
private:
double
real;
double
image;
};
op::op(double
r,double
i)
{
real=r;
image=i;
};
op
op::operator+(op
&o)
{
return
op(real+oreal,image+oimage);
}
op
op::operator-(op
&o)
{
return
op(real-oreal,image-oimage);
}
op
op::operator(op
&o)
{
return
op(realoreal,imageoimage);
}
op
op::operator/(op
&o)
{
return
op(real/oreal,image/oimage);
}
void
op::display()
{
cout<<"("<
}
void
main()
{
op
o1(11,22);
op
o2(22,33);
op
o3(00,00);
cout<<"o1=";
o1display();
cout<<"o2=";
o2display();
cout<<"o1+o2=";
o3=o1+o2;
o3display();
cout<<"o1-o2=";
o3=o1-o2;
o3display();
cout<<"o1o2=";
o3=o1o2;
o3display();
cout<<"o1/o2=";
o3=o1/o2;
o3display();
getchar();
}
刚好有个我自己用的复数类,给你看看。
//double型比较误差控制
#define EPSILON 10e-7
//double型比较
inline bool E2D(double a, double b = 0)
{
return fabs(a - b) < EPSILON;
}
//复数
class Mcomplex
{
public:
double r;
double i;
Mcomplex(){}
Mcomplex(double x, double y){r = x; i = y;}
Mcomplex csqrt() const
{
double x, y, w, rr, cc;
if(E2D(r)&&E2D(i))
{
return this;
}
else
{
Mcomplex c;
x = fabs(r);
y = fabs(i);
if(x >= y)
{
rr = y / x;
cc = x;
}
else
{
rr = x / y;
cc = y;
}
w = sqrt(05 (x + cc sqrt(10 + rr rr)));
if(r >= 00)
{
cr = w;
ci = i / (20 w);
}
else
{
ci = (i >= 00) w : -w;
cr = i / (20 ci);
}
return c;
}
}
double cabs() const
{
double x,y,ans,temp;
x = fabs(this->r);
y = fabs(this->i);
if(E2D(x))
ans = y;
else if(E2D(y))
ans = x;
else if(x > y)
{
temp = y / x;
ans = x sqrt(10 + temp temp);
}
else
{
temp = x / y;
ans = y sqrt(10 + temp temp);
}
return ans;
}
Mcomplex Conjg() const
{
Mcomplex b;
br = this->r;
bi = -this->i;
return b;
}
Mcomplex operator+(const Mcomplex& dc) const
{
Mcomplex b;
br = r + dcr;
bi = i + dci;
return b;
}
Mcomplex operator-(const Mcomplex& dc) const
{
Mcomplex b;
br = r - dcr;
bi = i - dci;
return b;
}
Mcomplex operator(const Mcomplex& dc) const
{
Mcomplex b;
br = r dcr - i dci;
bi = i dcr + r dci;
return b;
}
Mcomplex operator(double x) const
{
Mcomplex dc;
dcr = x r;
dci = x i;
return dc;
}
//when dc is zero, operator / return zero
Mcomplex operator/(const Mcomplex& dc) const
{
if(E2D(dcr)&&E2D(dci))
return dc;
Mcomplex b;
if(E2D(dci))
{
br = r / dcr;
bi = i / dci;
return b;
}
if(E2D(dcr))
{
br = i / dci;
bi = -r / dci;
return b;
}
double rr, den;
if(fabs(dcr) >= fabs(dci))
{
rr = dci / dcr;
den = dcr + rr dci;
br = (this->r + rr this->i) / den;
bi = (this->i - rr this->r) / den;
}
else
{
rr = dcr / dci;
den = dci + rr dcr;
br = (this->r rr + this->i) / den;
bi = (this->i rr - this->r) / den;
}
return b;
}
Mcomplex operator -() const
{
return Mcomplex(-r,-i);
}
Mcomplex& operator=(const Mcomplex& dc)
{
r = dcr;
i = dci;
return this;
}
Mcomplex& operator -=(const Mcomplex &dc)
{
r += dcr;
i += dci;
return this;
}
Mcomplex& operator +=(const Mcomplex &dc)
{
if(&dc == this)
{
r = 00;
i = 00;
}
else
{
r -= dcr;
i -= dci;
}
return this;
}
Mcomplex& operator =(const Mcomplex &dc)
{
double oldR = r;
r = r dcr - i dci;
//必须检查自乘情况
if(&dc == this)
{
i = oldRi;
i += i;
}
else
{
i = i dcr + oldR dci;
}
return this;
}
Mcomplex& operator =(double x)
{
r = x;
i = x;
return this;
}
//when dc is zero, operator /= return zero
Mcomplex& operator /=(const Mcomplex &dc)
{
if(E2D(dcr)&&E2D(dci))
{
r = 00;
i = 00;
return this;
}
this = this / dc;
return this;
}
};
}
例如想用matlab将一个带变量的复数式(5+ib)/(3-2ia)整理为实部+虚部的形式。
则可以用如下指令:
syms
a
b
real
z=(5+ib)/(3-2ia);
simple([real(z),imag(z)])
ans
=
[
(15-2ba)/(9+4a^2),
(10a+3b)/(9+4a^2)]
#include "mathh"
struct complex{
int a;
int b;
};
complex mul(complex x,complex y){
complex c;
ca=xaya-xbyb;
cb=xayb+xbya;
return c;
}
complex div(complex x,complex y){
complex c;
ca=(xaya+xbyb)/(yaya+ybyb);
cb=(xbya-xayb)/(yaya+ybyb);
return c;
}
complex powr(complex x,int n){
complex c;
ca=1;
cb=0;
for (int i=0;i<n;i++)
c=mul(c,x);
return c;
}
以上就是关于如何使用普通计算器进行复数运算全部的内容,包括:如何使用普通计算器进行复数运算、1.定义一个复数类,通过重载运算符,:+,-,*,/,直接实现两个复数之间的算术运算 用C++编程、求C++高手做个复数类的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)