要求:运算符重载
上代码
#include<iostream>
using namespace std;
class Complex
{
public:
Complex(){real=0;imag=0;}
Complex(double r,double i){real=r;imag=i;}
Complex operator +(Complex &c2);//重载+
Complex operator -(Complex &c2);//重载-
Complex operator *(Complex &c2);//重载*
Complex operator /(Complex &c2);//重载/
friend ostream &operator <<(ostream&,Complex&);//重载输出流
friend istream &operator >>(istream&,Complex&);//重载输入流
private:
double real;
double imag;
};
Complex Complex::operator + (Complex &c2)//+
{
return Complex(real+c2.real,imag+c2.imag);
}
Complex Complex::operator - (Complex &c2)//-
{
return Complex(real-c2.real,imag-c2.imag);
}
Complex Complex::operator *(Complex &c2)//*
{
return Complex(real*c2.real-imag*c2.imag,imag*c2.real+real*c2.imag);
}
Complex Complex::operator /(Complex &c2)// /
{
return Complex((real*c2.real+imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag),(imag*c2.real-real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag));
}
istream& operator>>(istream& input,Complex &c)//输入
{
input>>c.real>>c.imag;
return input;
}
ostream & operator <<(ostream &output,Complex &c)//输出
{
cout<<"("<<c.real;
if(c.imag>=0)
cout<<"+";
cout<<c.imag<<"i)"<<endl;
return output;
}
void welcome()//系统主菜单
{
cout<<" "<<endl;
cout<<" $-------------------------&"<<endl;
cout<<" ! !"<<endl;
cout<<" ! **小型特殊计算器** !"<<endl;
cout<<" ! !"<<endl;
cout<<" $-------------------------&"<<endl;
cout<<endl<<endl;
cout<<"请选择您的操作(0-2):"<<endl;
cout<<" 1.标准计算器"<<endl;
cout<<" 2.复数计算器"<<endl;
cout<<" 0.退出"<<endl;
cout<<"请输入编号(0-2): ";
}
int main()
{
cout<<"制作者:十七"<<endl;
while(1)
{
welcome();
int a;
cin>>a;
if(a==1)
{
double c1,c2,c3;
cout<<"请输入第一个数:";
cin>>c1;
cout<<"请输入第二个数:";
cin>>c2;
cout<<"请输入运算法则:";
char m;
cin>>m;
if(m=='+') c3=c1+c2;
if(m=='-') c3=c1-c2;
if(m=='*') c3=c1*c2;
if(m=='/') c3=c1/c2;
cout<<"运算结果为:"<<c3<<endl;
}
if(a==2)
{
Complex c1,c2,c3;
cout<<"请输入第一个数:";
cin>>c1;
cout<<"请输入第二个数:";
cin>>c2;
cout<<"请输入运算法则:";
char m;
cin>>m;
if(m=='+') c3=c1+c2;
if(m=='-') c3=c1-c2;
if(m=='*') c3=c1*c2;
if(m=='/') c3=c1/c2;
cout<<"运算结果为: "<<c3;
}
if(a==0)
return 0;
}
return 0;
}
binggo