您的位置:首页 > 编程语言 > PHP开发

第九周任务一之定义Complex类中的<<和>>运算符的重载

2012-04-16 18:39 716 查看
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称: 输入输出运算符重载
* 作    者:   石丽君
* 完成日期:        2012 年4       月16        日
* 版 本 号:

* 对任务及求解方法的描述部分
* 输入描述:定义Complex类中的<<和>>运算符的重载,实现输入和输出,改造原程序中对运算结果显示方式,使程序读起来更自然。
* 问题描述:
* 程序输出:
* 程序头部的注释结束
*/
#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 istream& operator >>(istream&,Complex&);
friend ostream& operator <<(ostream&,Complex&);
void display();
private:
double real;
double imag;
};
//下面定义成员函数
istream& operator >>(istream&input ,Complex&c)
{
char i;

cout<<"please input complex number(a+bi)or(a-bi):";
input>>c.real >>c.imag>>i;

return input;
}
ostream& operator <<(ostream&output,Complex&c)
{
if(c.imag>0)
output<<"("<<c.real<<'+'<<c.imag<<"i)";
else
output<<"("<<c.real<<c.imag<<"i)";
return output;
}

//加法
Complex Complex::operator+(Complex &c2)
{
Complex c;
c.real=real+c2.real;
c.imag=imag+c2.imag;
return c;
}
//减法
Complex Complex::operator-(Complex &c2)
{
Complex c;
c.real=real-c2.real;
c.imag=imag-c2.imag;
return c;

}
//乘法
Complex Complex::operator*(Complex &c2)
{
Complex c;
c.real=real*c2.real-imag*c2.imag;
c.imag=imag*c2.real+real*c2.imag;
return c;

}
//除法
Complex Complex::operator/(Complex &c2)
{
Complex c;
c.real=(real*c2.real+imag*c2.imag)/(real*real+imag*imag);
c.imag=(imag*c2.real-real*c2.imag)/(real*real+imag*imag);
return c;

}
void Complex::display( )
{
cout<<"("<<real<<","<<imag<<"i)"<<endl;
}

int main()
{
Complex c1,c2,c3;
cin>>c1>>c2;
cout<<"c1="<<c1<<endl;
cout<<"c2="<<c2<<endl;
c3=c1+c2;
cout<<"c1+c2="<<c3<<endl;
c3=c1-c2;
cout<<"c1-c2="<<c3<<endl;
c3=c1*c2;
cout<<"c1*c2="<<c3<<endl;
c3=c1/c2;
cout<<"c1/c2="<<c3<<endl;
system("pause");
return 0;
}

#include<iostream>
using namespace std;
class Complex
{
public:
Complex(){real=0;imag=0;}
Complex(double r,double i){real=r;imag=i;}
friend Complex operator+(Complex &c1,Complex &c2);
friend Complex operator-(Complex &c1,Complex &c2);
friend Complex operator*(Complex &c1,Complex &c2);
friend Complex operator/(Complex &c1,Complex &c2);
friend istream& operator >>(istream&,Complex&);
friend ostream& operator <<(ostream&,Complex&);
private:
double real;
double imag;
};
//下面定义成员函数
istream& operator >>(istream&input ,Complex&c)
{
char i;

cout<<"please input complex number(a+bi)or(a-bi):";
input>>c.real >>c.imag>>i;

return input;
}
ostream& operator <<(ostream&output,Complex&c)
{
if(c.imag>0)
output<<"("<<c.real<<'+'<<c.imag<<"i)";
else
output<<"("<<c.real<<c.imag<<"i)";
return output;
}

//加法
Complex operator+(Complex &c1,Complex &c2)
{
Complex c;
c.real=c1.real+c2.real;
c.imag=c1.imag+c2.imag;
return c;
}
//减法
Complex operator-(Complex &c1,Complex &c2)
{
Complex c;
c.real=c1.real-c2.real;
c.imag=c1.imag-c2.imag;
return c;

}
//乘法
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;

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

}
int main()
{
Complex c1,c2,c3;
cin>>c1>>c2;
cout<<"c1="<<c1<<endl;
cout<<"c2="<<c2<<endl;
c3=c1+c2;
cout<<"c1+c2="<<c3<<endl;
c3=c1-c2;
cout<<"c1-c2="<<c3<<endl;
c3=c1*c2;
cout<<"c1*c2="<<c3<<endl;
c3=c1/c2;
cout<<"c1/c2="<<c3<<endl;
system("pause");
return 0;
}

#include<iostream>
using namespace std;
class Complex
{
public:
Complex(){real=0;imag=0;}
Complex(double r,double i){real=r;imag=i;}
friend Complex operator+(Complex &c1,Complex &c2);
friend Complex operator-(Complex &c1,Complex &c2);
friend Complex operator*(Complex &c1,Complex &c2);
friend Complex operator/(Complex &c1,Complex &c2);
friend Complex operator-(Complex &c1);
friend Complex operator+(double&i,Complex &c2);
friend Complex operator*(Complex &c2,double&i);
friend istream& operator >>(istream&,Complex&);
friend ostream& operator <<(ostream&,Complex&);
private:
double real;
double imag;
};
//下面定义成员函数
istream& operator >>(istream&input ,Complex&c)
{
char i;

cout<<"please input complex number(a+bi)or(a-bi):";
input>>c.real >>c.imag>>i;

return input;
}
ostream& operator <<(ostream&output,Complex&c)
{
if(c.imag>0)
output<<"("<<c.real<<'+'<<c.imag<<"i)";
else
output<<"("<<c.real<<c.imag<<"i)";
return output;
}

//加法
Complex operator+(Complex &c1,Complex &c2)
{
Complex c;
c.real=c1.real+c2.real;
c.imag=c1.imag+c2.imag;
return c;
}
//减法
Complex operator-(Complex &c1,Complex &c2)
{
Complex c;
c.real=c1.real-c2.real;
c.imag=c1.imag-c2.imag;
return c;

}
//乘法
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;

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

}
//一目运算
Complex operator-(Complex &c1)
{
Complex c;
c.real=-c1.real;
c.imag=-c1.imag;
return c;
}
Complex operator+(double&i,Complex &c2)
{
Complex c;
c.real=i+c2.real;
c.imag=c2.imag;
return c;
}
Complex operator*(Complex &c2,double&i)
{

Complex c;
c.real=c2.real*i;
c.imag=c2.imag*i;
return c;
}

int main()
{
Complex c1,c2,c3;
double i=2.3;
cin>>c1>>c2;
cout<<"c1="<<c1<<" ";
cout<<"c2="<<c2<<endl;
c3=c1+c2;
cout<<"c1+c2="<<c3<<endl;
c3=c1-c2;
cout<<"c1-c2="<<c3<<endl;
c3=c1*c2;
cout<<"c1*c2="<<c3<<endl;
c3=c1/c2;
cout<<"c1/c2="<<c3<<endl;
c3=-c1;
cout<<"-c1="<<c3<<endl;
cout<<"i="<<i<<endl;
c3=c1*i;
cout<<"c1*i="<<c3<<endl;
c3=i+c1;
cout<<"i+c1="<<c3<<endl;
system("pause");
return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐