/*
*作者:lws
*完成時間:2014/6/12
*輸入:3 4 5 -10 3 4 5 5 3 4
*輸出:c1+c2=(8.00-6.00i) c1+d=(8.00+4.00i) d+c1=(8.00+4.00i)
*/
#include <iostream>
#include <iomanip>
//#include <cstdio>
using namespace std;
class Complex
{
public:
Complex():real(0),imag(0){}
Complex(double r,double i):real(r),imag(i){}
Complex operator+(Complex &c);
Complex operator+(double &d);
friend Complex operator+(double &d,Complex &c);
friend ostream& operator<<(ostream& output,const Complex &c);
private:
double real;
double imag;
};
Complex Complex::operator+(Complex &c)
{
return Complex(real+c.real,imag+c.imag);
}
Complex Complex::operator+(double &d)
{
return Complex(real+d,imag);
}
Complex operator+(double &d,Complex &c)
{
return Complex(d+c.real,c.imag);
}
ostream& operator<<(ostream& output,const Complex &c)
{
output<<setiosflags(ios::fixed)<<setprecision(2)<<"("<<c.real;
if(c.imag>=0) output<<"+";
output<<c.imag<<"i)";
return output;
}
int main()
{
//freopen("a.txt","r",stdin);
//測試複數加複數
double real,imag;
cin>>real>>imag;
Complex c1(real,imag);
cin>>real>>imag;
Complex c2(real,imag);
Complex c3=c1+c2;
cout<<"c1+c2="<<c3<<endl;
//測試複數加實數
double d;
cin>>real>>imag;
cin>>d;
c3=Complex(real,imag)+d;
cout<<"c1+d="<<c3<<endl;
//測試實數加複數
cin>>d;
cin>>real>>imag;
c1=Complex(real,imag);
c3=d+c1;
cout<<"d+c1="<<c3<<endl;
//fclose(stdin);
return 0;
}
運作結果:
