游客 Signup | Login
中文 | En

2771 - 复数类(运算符重载)

定义一个复数类Complex,重载运算符"","<<",">>",使之能够用于复数的乘法、输入、输出。复数乘法公式(a+bi)(c+di)=(ac-bd)+(bc+ad)i.主函数定义如下:
int main()
{Complex c1,c2,c3;
 cin>>c1>>c2;
 c3=c1
c2;
    cout<<c3;
 
 return 0;}

Input

每行二个整数,表示复数的实部和虚部。输入二个复数,必须用cin>>c1>>c2;

Output

输出一个复数,输出时不要换行,必须用cout<<c3;

Examples

Input

2 3 
4 5

Output

-7+22i

Solution C++

#include <iostream>
using namespace std;
class Complex

{ int real,imag;
public:
   	Complex( ):real(0),imag(0){}
	Complex(int r,int i):real(r),imag(i){}
	friend Complex operator *(Complex& c1,Complex& c2);
	friend istream & operator>>(istream & input,Complex& c);
	friend ostream & operator<<(ostream & out,Complex& c);
};

istream & operator>>(istream &input,Complex& c)
{input>>c.real>>c.imag;
return input;}

ostream & operator<<(ostream & out,Complex& c)
{   
	out<<c.real;
		if (c.imag>0) out<<"+";
		if (c.imag!=0) out<<c.imag<<"i"<<endl;
return out;}

Complex operator *(Complex& c1,Complex& c2)
{Complex c;
c.real=c1.real*c2.real-c1.imag*c2.imag;
c.imag=c1.imag*c2.real+c1.real*c2.imag;
return c;
}

int main()
{Complex c1,c2,c3;
	cin>>c1>>c2;
	c3=c1*c2;
    cout<<c3;
 
	return 0;}

            
Time Limit 1 second
Memory Limit 128 MB
Discuss Stats
上一题 下一题