中易网

C++里怎样使用复数

答案:4  悬赏:0  
解决时间 2021-02-12 20:44
C++里怎样使用复数
最佳答案
#include
#include
#define GAP 0.00001
#define COMP(X,Y) (abs((X)-(Y)) class Data
{
public :
float a;
float b;
Data(void):a(0),b(0){};
};
class Plural :public Data
{
private:
char pszstr[32];
public :
Plural(void){};
Plural(float ia,float ib){
a= ia;
b= ib;
};
~Plural(void){};
char *PluralPrintf(void){

if(COMP(b,0.0))
sprintf(pszstr,"%5.2f",a);
else if(COMP(a,0.0))
sprintf(pszstr,"%5.2fi",b);
else if(b>0)
sprintf(pszstr,"%5.2f+%5.2fi",a,b);
else
sprintf(pszstr,"%5.2f%5.2fi",a,b);

return pszstr;
}
float mod (void)
{
float t= a*a+b*b;

return sqrt(t);
}
Plural & operator = (const Data & d)
{
a = d.a;
b = d.b;
return *this;
}
Plural operator + (const Data & d)
{
return Plural(a+d.a,b+d.b);
}
Plural operator - (const Data & d)
{
return Plural(a-d.a,b-d.b);
}
Plural operator * (const Data & d)
{
//ac-bd bc+ad
return Plural((a*d.a-b*d.b),(b*d.a+a*d.b));
}
Plural operator / (const Data & d)
{
// (ac+bd)/(c^2+d^2) ((bc-ad)/(c^2+d^2))
return Plural((a*d.a+b*d.b)/(d.a*d.a+d.b*d.b),(b*d.a-a*d.b)/(d.a*d.a+d.b*d.b));
}
Plural operator ^ (const int &c)
{
Plural t = *this;
for(int i=1;i t =t* (*this);
return t;
}
Plural operator ++ (void)
{
a++;
//b++;
return *this;
}
Plural operator ++ (int)
{
a++;
//b++;
return *this;
}
Plural operator -- (void)
{
a--;
//b--;
return *this;
}
Plural operator -- (int)
{
a--;
//b--;
return *this;
}
};

int main(int argc, _TCHAR* argv[])
{
Data d;
Plural p,c;
scanf("%f %f",&d.a,&d.b);
p=d;

c = p^2;
float s= c.mod();
printf("%f",s);
printf("%s\n",c.PluralPrintf());
return 0;
}
全部回答
没有复数,自己利用实部、虚部做吧
#include using namespace std; typedef struct { double a, b; } fushu; fushu add(fushu a, fushu b) { fushu c; c.a = a.a + b.a; c.b = a.b + b.b; return c; } fushu jian(fushu a, fushu b) { fushu c; c.a= a.a - b.a; c.b = a.b- b.b; return c; } fushu cheng(fushu a, fushu b) { fushu c; c.a = a.a * b.a - a.b * b.b; c.b = a.a * b.b + a.b * b.a; return c; } fushu chu(fushu a, fushu b) { fushu c; c.a = (a.a * b.a + a.b *b.b ) /(b.a * b.a +b.b *b.b ) ; c.b = (-a.a * b.b + a.b * b.a)/(b.a * b.a +b.b *b.b ) ; return c; } 大概就是这样子, 写的有点乱, 组要是表示的有点论, a,b两个字母用太多了
#include #include using namespace std; int main(void) { complex c(2,5); cout<< c.real() << '+' << c.imag() << 'i' <
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯