?? complex.cpp
字號:
#include <math.h>
#include <stdio.h>
//#include "iostream.h"
#define pi 3.14159265
class Complex
{
private:
double real;
double imaginary;
public:
Complex();
Complex(double re,double ima);
double GetAbs();//獲得模
double GetAzimuth();//獲得主幅角
void Reset(double re,double ima);//重置復數的實部和虛部
void SetReal(double re);
void SetImaginary(double ima);
double GetReal();//獲得實部虛部
double GetImaginary();
Complex GComplex();//共軛復數
void Show();
//重載運算符
Complex & operator = (Complex X);
Complex operator + (Complex X);
Complex operator - (Complex X);
Complex operator * (Complex X);
Complex operator / (Complex X);
Complex operator ^ (int n);
bool operator == (Complex X);
bool operator != (Complex X);
~Complex();
}/*;*/
Complex::Complex(double re,double ima)
{
real=re;
imaginary=ima;
}
Complex::Complex()
{
real=0;
imaginary=0;
}
double Complex::GetAbs()
{
return sqrt(real*real+imaginary*imaginary);
}
double Complex::GetAzimuth()
{
double a,b;
a=real;
b=imaginary;
if(a==0)
{
if(b==0)
{
return 0;
}
else
{
if(b>0)
{
return pi/2;
}
else
{
return 3*pi/2;
}
}
}
else
{
if(a>0)
{
if(b>=0)
{
return atan(b/a);
}
else
{
return 2*pi+atan(b/a);
}
}
else
{
return pi+atan(b/a);
}
}
}
void Complex::SetReal(double re)
{
real=re;
}
void Complex::SetImaginary(double ima)
{
imaginary=ima;
}
void Complex::Reset(double re,double ima)
{
real=re;
imaginary=ima;
return;
}
double Complex::GetReal()
{
return real;
}
double Complex::GetImaginary()
{
return imaginary;
}
Complex Complex::GComplex()
{
Complex temp;
temp.real=real;
temp.imaginary=-imaginary;
return temp;
}
void Complex::Show()
{
if(imaginary>=0)
{
printf("%.4f+%.4fj\n",real,imaginary);
//cout <<this->real<<"+"<<this->imaginary<<"j"<<endl;
}
else
{
printf("%.4f-%.4fj\n",real,-imaginary);
}
}
Complex & Complex::operator = (Complex X)
{
real=X.GetReal();
imaginary=X.GetImaginary();
return *this;
}
Complex Complex::operator + (Complex X )
{
Complex temp;
temp.SetReal(real+X.GetReal());
temp.SetImaginary(imaginary+X.GetImaginary());
return temp;
}
Complex Complex::operator - (Complex X)
{
Complex temp;
temp.SetReal(real-X.GetReal());
temp.SetImaginary(imaginary-X.GetImaginary());
return temp;
}
Complex Complex::operator * (Complex X)
{
Complex temp;
double a,b,c,d;
a=real;
b=imaginary;
c=X.GetReal();
d=X.GetImaginary();
temp.SetReal(a*c-b*d);
temp.SetImaginary(a*d+b*c);
return temp;
}
Complex Complex::operator / (Complex X)
{
Complex temp;
double a,b,c,d;
a=real;
b=imaginary;
c=X.GetReal();
d=X.GetImaginary();
temp.SetReal((a*c+b*d)/(c*c+d*d));
temp.SetImaginary((b*c-a*d)/(c*c+d*d));
return temp;
}
Complex Complex::operator ^ (int n)
{
if(n<0)
{
Complex temp=*this;
Complex X(1,0);
for(int i=0;i<-n-1;i++)
{
temp=temp*(*this);
}
return X/temp;
}
else
{
if(n==0)
{
Complex temp(1,0);
return temp;
}
else
{
Complex temp=*this;
for(int i=0;i<n-1;i++)
{
temp=temp*(*this);
}
return temp;
}
}
}
bool Complex::operator == (Complex X)
{
return (real==X.GetReal() && imaginary==X.GetImaginary());
}
bool Complex::operator != (Complex X)
{
return (real!=X.GetReal() || imaginary!=X.GetImaginary());
}
Complex::~Complex(void)
{
}
void main()
{
Complex a(3,7),b(-4,-9),c(-2,5);
Complex d;
printf("a=");
a.Show();
printf("b=");
b.Show();
printf("c=");
c.Show();
printf("d=");
d.Show();
printf("\n");
printf("復數a的模=%.4f\n",a.GetAbs());
printf("復數a的主幅角(弧度)=%.4f\n",a.GetAzimuth());
printf("復數b的模=%.4f\n",b.GetAbs());
printf("復數b的主幅角(弧度)=%.4f\n",b.GetAzimuth());
printf("復數c的模=%.4f\n",c.GetAbs());
printf("復數c的主幅角(弧度)=%.4f\n",c.GetAzimuth());
printf("\n");
d=a+b;
printf("a+b=");
d.Show();
d=a-b;
printf("a-b=");
d.Show();
d=a*b;
printf("a*b=");
d.Show();
d=a/b;
printf("a/b=");
d.Show();
d=a^(0);
printf("a^(0)=");
d.Show();
d=a^(-3);
printf("a^(-3)=");
d.Show();
d=b^4;
printf("b^(4)=");
d.Show();
printf("\n");
if(a==b)
{
printf("a==b\n");
}
if(a!=b)
{
printf("a!=b\n");
}
c.Reset(3,7);
if(a==c)
{
printf("a==c\n");
}
if(a!=c)
{
printf("a!=c\n");
}
printf("\n");
//重新置復數a的實部,虛部
a.SetReal(4.7);
a.SetImaginary(7.5);
printf("重置復數a后的的值為:\n");
a.Show();
a.Reset(5,5.4);
a.Show();
return;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -