#include<iostream>
#include<cmath>
using namespace std;
/**//////////////////////////////Complex Class///////////////////////////////////////class Complex
{
private:
//double real;
//double image;
//void show();
public:
void show();
double real;
double image;
Complex(){real=0;image=0;}
~Complex(){}
Complex(double a,double b){real=a;image=b;}
double Getreal(){return real;}
double Getimage(){return image;}
double abs(){return sqrt(real*real+image*image);}
Complex operator +(Complex &other);
Complex operator +(const double &other);
Complex operator +(const int &other);
Complex operator -(Complex &other);
Complex operator -(const double &other);
Complex operator -(const int &other);
Complex operator *(Complex &other);
Complex operator *(const double &other);
Complex operator *(const int &other);
Complex operator /(Complex &other);
Complex operator /(const double &other);
Complex operator /(const int &other);
void operator +=(Complex &other);
void operator +=(const double &other);
void operator +=(const int &other);
void operator -=(Complex &other);
void operator -=(const double &other);
void operator -=(const int &other);
void operator *=(Complex &other);
void operator *=(const double &other);
void operator *=(const int &other);
void operator /=(Complex &other);
void operator /=(const double &other);
void operator /=(const int &other);
Complex operator =(Complex &other);
Complex operator =(const double &other);
Complex operator =(const int &other);
bool operator ==(Complex &other);
bool operator ==(const double &other);
bool operator ==(const int &other);
friend iostream operator<<(iostream &os,Complex &other);
friend iostream operator>>(iostream &is,Complex &other);
};
void Complex::show()
{
if(real>0&&image<0)
printf("%g%gj",real,image);
else if(real>0&&image>0)
printf("%g+%gj",real,image);
else if(real<0&&image>0)
printf("%g+%gj",real,image);
else if(real<0&&image<0)
printf("%g%gj",real,image);
else if(real==0&&image!=0)
printf("%gj",image);
else if(real!=0&&image==0)
printf("%g",real);
else
printf("0");
}
Complex Complex::operator+(Complex &other)
{
Complex temp;
temp.real=real+other.real;
temp.image=image+other.image;
return temp;
}
Complex Complex::operator +(const double &other)
{
Complex temp;
temp.real=real+other;
temp.image=image;
return temp;
}
Complex Complex::operator +(const int &other)
{
Complex temp;
temp.real=real+(double)other;
temp.image=image;
return temp;
}
Complex Complex::operator-(Complex &other)
{
Complex temp;
temp.real=real-other.real;
temp.image=image-other.image;
return temp;
}
Complex Complex::operator -(const double &other)
{
Complex temp;
temp.real=real-(double)other;
temp.image=image;
return temp;
}
Complex Complex::operator -(const int &other)
{
Complex temp;
temp.real=real-(double)other;
temp.image=image;
return temp;
}
Complex Complex::operator*(Complex &other)
{
Complex temp;
temp.real=(real*other.real-image*other.image);
temp.image=(image*other.real+real*other.image);
return temp;
}
Complex Complex::operator *(const double &other)
{
Complex temp;
temp.real=real*other;
temp.image=image*other;
return temp;
}
Complex Complex::operator *(const int &other)
{
Complex temp;
temp.real=real*(double)other;
temp.image=image*(double)other;
return temp;
}
Complex Complex::operator/(Complex &other)
{
Complex temp;
temp.real=((real*other.real)+(image*other.image))/(other.real*other.real+other.image*other.image);
temp.image=((image*other.real)-(real*other.image))/(other.real*other.real+other.image*other.image);
return temp;
}
Complex Complex::operator /(const double &other)
{
Complex temp;
temp.real=real/other;
temp.image=image/other;
return temp;
}
Complex Complex::operator /(const int &other)
{
Complex temp;
temp.real=real/(double)other;
temp.image=image/(double)other;
return temp;
}
void Complex::operator+=(Complex &other)
{
this->real+=other.real;
this->image+=other.image;
}
void Complex::operator +=(const double &other)
{
this->real+=other;
}
void Complex::operator +=(const &other)
{
this->real+=(double)other;
}
void Complex::operator-=(Complex &other)
{
this->real-=other.real;
this->image-=other.image;
}
void Complex::operator -=(const double &other)
{
this->real-=other;
}
void Complex::operator -=(const int &other)
{
this->real-=(double)other;
}
void Complex::operator*=(Complex &other)
{
this->real=(real*other.real-image*other.image);
this->image=(image*other.real+real*other.image);;
}
void Complex::operator *=(const double &other)
{
this->real=real*other;
this->image=image*other;
}
void Complex::operator *=(const int &other)
{
this->real=real*(double)other;
this->image=image*(double)other;
}
void Complex::operator/=(Complex &other)
{
this->real=((real*other.real)+(image*other.image))/(other.real*other.real+other.image*other.image);
this->image=((image*other.real)-(real*other.image))/(other.real*other.real+other.image*other.image);
}
void Complex::operator /=(const double &other)
{
this->real=real/other;
this->image=image/other;
}
void Complex::operator /=(const int &other)
{
this->real=real/(double)other;
this->image=image/(double)other;
}
Complex Complex::operator= (Complex &other)
{
this->real=other.real;
this->image=other.image;
return *this;
}
Complex Complex::operator =(const double &other)
{
this->real=other;
this->image=image;
return *this;
}
Complex Complex::operator =(const int &other)
{
this->real=(double)other;
this->image=image;
return *this;
}
bool Complex::operator ==(Complex &other)
{
if(this->real=other.real&&this->image==other.image)
return true;
else return false;
}
bool Complex::operator ==(const double &other)
{
if(this->real==other&&this->image==0)
return true;
else
return false;
}
bool Complex::operator ==(const int &other)
{
if(this->real==(double)other&&this->image==0)
return true;
else
return false;
}
ostream& operator<<(ostream &cout,Complex &other)
{
other.show();
return cout;
}
istream& operator>>(istream &cin,Complex &other)
{
cin>>other.real;
cin>>other.image;
return cin;
}
/**//////////////////////////////END_COMPLEX_CLASS///////////////////////////////
int main()
{
Complex test1(10,6);
Complex test2(5,3);
cout<<test1*test2<<endl;
cout<<test1+test2<<endl;
cout<<test1/test2<<endl;
cout<<test1-test2<<endl;
return 0;
}
不知道是人品问题还是其他什么因素,当我把real和image放在私有成员里面时编译居然会报错???我已经将>>和<<重载为友元函数了丫?
我试了下网上和我写的差不多的程序,结果是他的能过我的 就是不行,而出问题的<<,>>部分居然还是一样的。我...无语了...究竟是怎么回事?