C++里怎样使用复数
答案:4 悬赏:0
解决时间 2021-02-12 20:44
- 提问者网友:無奈小影
- 2021-02-12 12:00
C++里怎样使用复数
最佳答案
- 二级知识专家网友:怪咖小青年
- 2021-02-12 12:43
#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
#define GAP 0.00001
#define COMP(X,Y) (abs((X)-(Y))
{
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
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;
}
全部回答
- 1楼网友:一池湖水
- 2021-02-12 15:08
没有复数,自己利用实部、虚部做吧
- 2楼网友:不服输就别哭
- 2021-02-12 14:54
#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两个字母用太多了
- 3楼网友:堕落奶泡
- 2021-02-12 14:13
#include
#include
using namespace std;
int main(void)
{
complex c(2,5);
cout<< c.real() << '+' << c.imag() << 'i' <
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |