读书人

【C++】复数计算器中的乘方怎么实现

发布时间: 2012-06-04 14:48:03 作者: rapoo

【C++】复数计算器中的乘方如何实现~

C/C++ code
#include <iostream>#include <stdio.h>#include <math.h>using namespace std;class complexClass{public:        void input(){scanf_s("%f%fi",&RealPart,&ImaginePart);}        void output()        {             if (RealPart==0 && ImaginePart==0){printf("0");}             else if (RealPart==0){printf("%gi",ImaginePart);}             else if (ImaginePart>0){printf("%g+%gi",RealPart,ImaginePart);}             else {printf("%g%gi",RealPart,ImaginePart);}             printf("\n");        }        complexClass(float r=0,float i=0):RealPart(r),ImaginePart(i){}        float RealPart,ImaginePart;        float Re(){return RealPart;}        float Im(){return ImaginePart;}};bool operator == (complexClass a,complexClass b){return (a.Re()==b.Re())&&(a.Im()==b.Im());}complexClass operator+(complexClass a,complexClass b){           complexClass c(a.Re()+b.Re(),a.Im()+b.Im());           return c;}complexClass operator-(complexClass a,complexClass b){           complexClass c(a.Re()-b.Re(),a.Im()-b.Im());           return c;}complexClass operator*(complexClass a,complexClass b){           complexClass c           (a.Re()*b.Re()-a.Im()*b.Im(),           a.Re()*b.Im()+a.Im()*b.Re());           return c;}complexClass operator^(complexClass a,complexClass b)    {           complexClass c;           powf(a.Im()+a.Re(),b.Im()*b.Re());           return c;}complexClass operator/(complexClass a,complexClass b){           complexClass c;           if (b==c) return c;           float k=b.Re()*b.Re()+b.Im()*b.Im();           c.RealPart=a.Re()*b.Re()+a.Im()*b.Im();           c.RealPart/=k;           c.ImaginePart=-a.Re()*b.Im()+a.Im()*b.Re();           c.ImaginePart/=k;           return c;}complexClass abs(complexClass s){return sqrt(s.Re()*s.Re()+s.Im()*s.Im());}int main(){    cout<<"please input two complex number style like a+b which want calculate"<<"\n";    complexClass x,y;    x.input();y.input();    cout<<"addition:";    (x+y).output();    cout<<"subtraction:";    (x-y).output();    cout<<"multiplication:";    (x*y).output();    cout<<"division:";    (x/y).output();     cout<<"power:";    (x^y).output();    return 0;}

其中的乘方输出总是0,是不是我的编译有问题呢?希望大神帮忙调试一下~

[解决办法]
C/C++ code
complexClass c;c = powf(a.Im()+a.Re(),b.Im()*b.Re());return c; 

读书人网 >C++

热点推荐