C++ 友元函数实现复数的运算
#include<iostream.h>
class imaginary
{
public:
imaginary(double r,double i);
friend imaginary add(const imaginary &c1,const imaginary &c2);
friend imaginary sub(const imaginary &c1,const imaginary &c2);
friend imaginary mul(const imaginary &c1,const imaginary &c2);
friend imaginary div(const imaginary &c1,const imaginary &c2);
void show();
private:
double real;
double imag;
};
imaginary::imaginary(double r=0.0,double i=0.0)
{
real=r;
imag=i;
}
imaginary add(const imaginary &c1,const imaginary &c2)
{
return imaginary(c1.real+c2.real,c1.imag+c2.imag);
}
imaginary sub(const imaginary &c1,const imaginary &c2)
{
return imaginary(c1.real-c2.real,c1.imag-c2.imag);
}
imaginary mul(const imaginary &c1,const imaginary &c2)
{
return imaginary((c1.real*c2.real-c1.imag*c2.imag),(c1.imag*c2.real+c1.real*c2.imag));
}
imaginary div(const imaginary &c1,const imaginary &c2)
{
double a,b;
a=(c1.real*c2.real+c1.imag*c2.imag)/(c2.imag*c2.imag+c2.real*c2.real);
b=(c1.imag*c2.real-c1.real*c2.imag)/(c2.imag*c2.imag+c2.real*c2.real);
return imaginary(a,b);
}
void imaginary::show()
{
cout<<real<<"+"<<imag<<"i"<<endl;
}
int main()
{
imaginary c1(1,2),c2(3,4);
c1.show();
c2.show();
char ch;
cin>>ch;
switch(ch)
{
case '+':
cout<<"result:";
add(c1,c2).show();
break;
case '-':
cout<<"result:";
sub(c1,c2).show();
break;
case '*':
cout<<"result:";
mul(c1,c2).show();
break;
case '/':
cout<<"result:";
div(c1,c2).show();
break;
default:
break;
}
return 0;
}