第九实验报告任务一

/* (程序头部注释开始)  
* 程序的版权和版本声明部分 
 
* Copyright (c) 2011, 烟台大学计算机学院学生  
 
* All rights reserved.* 文件名称: 重载输入输出流
* 作 者: 郭岩岩 

* 完成日期:2012 年4月 16日 

* 版 本 号: vc.1 

* 对任务及求解方法的描述部分 

* 输入描述:  

* 问题描述:  

* 程序输出:  

*程序头部的注释结束 

*/  

#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 &input,Complex &c);
	friend ostream& operator<<(ostream &output,Complex &c);
private:  
    double real;  
    double imag;  
};  
  
//方案二友元函数
istream& operator>>(istream &input,Complex &c)
{
	char a;
	cout<<"请输入一个复数:";
	input>>c.real>>c.imag>>a;
	return input;
}
ostream& operator<<(ostream &output,Complex &c)
{
	output<<c.real;
	if(c.imag >0)
	{
		output<<"+";
	}
	output<<c.imag <<"i"<<endl;
	return output;
}


Complex operator+(Complex &c1,Complex &c2)  
{  
    return Complex(c1.real +c2.real ,c1.imag +c2.imag );  
}  
Complex operator-(Complex &c1,Complex &c2)  
{  
    return Complex(c1.real -c2.real ,c1.imag -c2.imag );  
}  
Complex operator*(Complex &c1,Complex &c2)  
{  
    Complex c;  
    c.real =c1.real*c2.real -c1.imag*c2.imag  ;  
    c.imag=c1.imag*c2.real+c2.imag*c1.real ;  
    return c;  
}  
Complex operator/(Complex &c1,Complex &c2)  
{  
    Complex c;  
    c.real =(c1.real*c2.real -c1.imag*c2.imag)/(c2.real *c2.real +c2.imag *c2.imag )  ;  
    c.imag=(c1.imag*c2.real+c2.imag*c1.real)/(c2.real *c2.real +c2.imag *c2.imag ) ;  
    return c;  
}   
int main()  
{  
    Complex c1,c2,c3;
	cin>>c1;
    cout<<"c1=";
	cout<<c1;
	cin>>c2;
    cout<<"c2=";
	cout<<c2;  
    c3=c1+c2;  
    cout<<"c1+c2=";  
   cout<<c3;  
    c3=c1-c2;  
    cout<<"c1-c2=";  
    cout<<c3;  
    c3=c1*c2;  
    cout<<"c1*c2=";  
    cout<<c3;  
    c3=c1/c2;  
    cout<<"c1/c2=";  
    cout<<c3;  
    system("pause");  
    return 0;  
}  


上机感言:哇!好神奇!!!!

经验积累:对输入输出流的重载的函数的第一个参数和函数的类型必须后面加&;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值