?? complex.cpp
字號:
#include "stdio.h"
#include "iostream.h"
#include "math.h"
//定義complex類
class complex
{
friend ostream &operator<<(ostream &,const complex &);
friend istream &operator>>(istream &, complex &);
public:
complex(double=0,double=0);
setcomplex(double=0,double=0);
complex operator+(const complex &)const;
complex operator-(const complex &)const;
complex operator*(const complex &)const;
complex operator/(const complex &)const;
complex &operator=(const complex &);
int operator==(const complex &);
int operator!=(const complex &);
private:
double real;
double imaginary;
};
//complex類的相關(guān)成員函數(shù)的定義,重載
complex::complex(double r,double imag)
{
real=r;
imaginary=imag;
}
complex::setcomplex(double r,double imag)
{
real=r;
imaginary=imag;
}
//重載復(fù)數(shù)加法“+”運算
complex complex::operator+(const complex &second)const
{
complex sum;
sum.real=real+second.real;
sum.imaginary=imaginary+second.imaginary;
return sum;
}
//重載復(fù)數(shù)減法“-”運算
complex complex::operator-(const complex &second)const
{
complex diff;
diff.real=real-second.real;
diff.imaginary=imaginary-second.imaginary;
return diff;
}
//重載復(fù)數(shù)乘法“*”運算
complex complex::operator*(const complex &second)const
{
complex mult;
mult.real=real*second.real-imaginary*second.imaginary;
mult.imaginary=imaginary*second.real+real*second.imaginary;
return mult;
}
//重載復(fù)數(shù)除法“/運算
complex complex::operator/(const complex &second)const
{
complex div;
if(second.imaginary==0 &&second.real==0)
{
cout<<"The Div does not exist !!";
return 0;
}
else
{
div.real=(real*second.real+imaginary*second.imaginary)/(pow(second.real,2)+pow(second.imaginary,2));
div.imaginary=(imaginary*second.real-real*second.imaginary)/(pow(second.real,2)+pow(second.imaginary,2));
return div;
}
}
//重載復(fù)數(shù)賦值“=”運算符
complex& complex::operator=(const complex &right)
{
real=right.real;
imaginary=right.imaginary;
return *this;
}
//重載復(fù)數(shù)“==”運算 當(dāng)實部和虛部的差值分別小于0.00001時,認(rèn)為兩復(fù)數(shù)相等,否則,不相等。
int complex::operator==(const complex &right)
{
if(fabs(real-right.real)<0.0001 && fabs(imaginary-right.imaginary<0.0001))
return 1;
else
return 0;
}
//重載復(fù)數(shù)“!=”運算 當(dāng)實部和虛部的差值分別小于0.00001時,認(rèn)為兩復(fù)數(shù)相等,否則,不相等。
int complex::operator!=(const complex &right)
{
if(fabs(real-right.real)<0.0001 && fabs(imaginary-right.imaginary<0.0001))
return 0;
else
return 1;
}
//重載復(fù)數(shù)流輸出運算符
ostream &operator<<(ostream &output,const complex &comp)
{
output<<comp.real<<((comp.imaginary<0)?"-":"+")<<fabs(comp.imaginary)<<"i";
return output;
}
//重載復(fù)數(shù)流輸入運算符
istream &operator>>(istream &input,complex &comp)
{
int sign=0;
cin>>comp.real>>comp.imaginary;
input.ignore();
if(sign=='-') comp.imaginary=-comp.imaginary;
return input;
}
//
// main 函數(shù)
//
#include "iostream.h"
int main(int argc, char* argv[])
{
complex comp1,comp2;
// 輸入兩個復(fù)數(shù) ,以 a+bi 的形式
cout<<"\nPlease input the two complex (input type: a+bi Or a-bi):\n\n"<<"First: ";
cin>>comp1;
cout<<"\nSecond: ";
cin>>comp2;
complex sum,minus,mult,div;// 聲明復(fù)數(shù) 和,差,積,商
sum=comp1+comp2; //復(fù)數(shù)加法"+"
minus=comp1-comp2; //復(fù)數(shù)減法"-"
mult=comp1*comp2; //復(fù)數(shù)乘法"*"
div=comp1/comp2; //復(fù)數(shù)乘法"*"
cout<<"\n和為 :"<<sum<<"\n"
<<"差為 :"<<minus<<"\n"
<<"積為 :"<<mult<<"\n"
<<"商為 :"<<div<<"\n";
return 0;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -