您的位置:首页 > 其它

complex类定义

2016-03-23 20:33 344 查看
关于complex类的定义:

#include<iostream>
using namespace std;
class complex
{
public:
complex()
{real=0;im=0;}
complex(float a,float b):real(a),im(b){}
friend complex operator+(complex& a,complex& b);
friend complex operator-(complex& a,complex& b);
friend complex operator*(complex& a,complex& b);
friend complex operator/(complex& a,complex& b);
friend istream& operator>> (istream&,complex&);
friend ostream& operator<< (ostream& output,complex& a);
void display();

private:
float real;
float im;
};

void complex::display()
{

if(real<0.1&&real>-0.1)
real = 0;
if(im<0.1&&im>-0.1)
im=0;
if(im==0)
{   cout.setf(ios::fixed);
cout.precision(1);
cout<<real;}
else if(real==0.0&&im!=0)
{
cout.setf(ios::fixed);
cout.precision(1);
cout<<im<<'i';
}
else
{
if(im>0)
{cout.setf(ios::fixed);
cout.precision(1);

cout<<real<<'+'<<im<<'i';}
else
{
cout.setf(ios::fixed);
cout.precision(1);

cout<<real<<im<<'i';
}
}
}
complex operator+(complex& a,complex& b)
{
complex ans;
ans.real = a.real+b.real;
ans.im = a.im+b.im;
return ans;
}
complex operator-(complex& a,complex& b)
{
complex ans;
ans.real = a.real-b.real;
ans.im = a.im-b.im;
return ans;
}
complex operator*(complex& a,complex& b)
{
complex ans;
ans.real = a.real*b.real-a.im*b.im;
ans.im = a.real*b.im+a.im*b.real;
return ans;
}
complex operator/(complex& a,complex& b)
{
complex ans;
ans.real = (a.real*b.real+a.im*b.im)/(b.real*b.real+b.im*b.im);
ans.im =  (a.im*b.real-a.real*b.im)/(b.real*b.real+b.im*b.im);
return ans;
}
istream& operator>> (istream& input,complex& a)
{
input>>a.real>>a.im;
return input;
}
ostream& operator<< (ostream& output,complex& a)
{
output<<'('<<a.real<<','<<a.im<<')';
return output;
}
int main()
{

complex a,b,ans1,ans2,ans3,ans4;
cin>>a>>b;
ans1=a+b;
ans2=a-b;
ans3=a*b;
ans4=a/b;

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: