/* (程序头部注释开始)
* 程序的版权和版本声明部分
* 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; }