姜志达实验十报告_第1页
姜志达实验十报告_第2页
姜志达实验十报告_第3页
姜志达实验十报告_第4页
姜志达实验十报告_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验十实验报告 姜志达1实验目的(1) 掌握运算符重载的定义及实现。(2) 掌握具有运算符重载的应用。2实验设备硬件环境:微型计算机软件环境: 操作系统: Windows 语言环境: Visual C+3预习要求学习教材有关运算符重载的内容,对基本运算符重载及特殊运算符重载有充分的理解。对实验基本要求应在上机实验前仔细阅读,程序应事先编制完成,上机时录入调试,同时还应设计相应的测试用例集,检查程序的正确性、可靠性、完备性和容错能力。4实验内容(1)将一个16位二进制数表示成0和1的字符序列,即用一个字符数组来存放这个二进制数。在这个类中设置两个构造函数,一个是传递整数参数的,另一个是传递字符串

2、参数的。因为用户在创建对象时传递的二进制数,可能是以整数形式给出,也可能是以数字串形式给出,系统应该都能接受。另外有一个类型转换函数int(),用来将类类型向整型转换。程序中的两个重载运算符“+”,“-”,用来完成两个二进制数之间的加减运算。#include "iostream.h"#include "string.h"#include "conio.h"class binary /定义二进制类 char bits16; /二进制字模数组 public: binary(char *); /字符串参数构造函数 binary(int);

3、/整型参数构造函数 friend binary operator +(binary,binary); /重载“+” friend binary operator -(binary,binary); /重载“-” operator int(); /类类型转换函数 void print(); binary:binary(char *num) int isrc=strlen(num)-1; /字符串长度-1为最低位 int idest=15; while(isrc>=0 && idest>=0) bitsidest-=(numisrc-='0'?'

4、0':'1'); / 逐位赋值 while(idest>=0) bitsidest-='0' / 空高位值0 binary:binary(int num) for(int i=15; i>=0;i-) bitsi=( (1) ); /求余数 num>>=1; /移位,相当于整除2 binary operator +(binary n1, binary n2) unsigned carry=0; unsigned value; binary res="0" for(int i=15; i>=0; i-) v

5、alue=(n1.bitsi='0'?0:1)+( (2) )+carry; res.bitsi=(value%2=0?'0':'1'); carry=value>>1; return res; binary operator -(binary n1, binary n2) unsigned borrow=0; int value; binary res="0" for(int i=15; i>=0; i-) value=(n1.bitsi='0'?0:1)-(n2.bitsi='0&

6、#39;?0:1)+borrow; res.bitsi=(value=-1|value=1?'1':'0'); borrow=(value=-1|borrow!=0&&(value=0|value=1)?1:0); return res; binary:operator int() unsigned value=0; for(int i=0; i<=15; i+) value=( (3) )+(bitsi='0'?0:1); return value; void binary:print() char str17; strn

7、cpy(str,bits,16); str16='0' cout<<str<<"n" main() binary n1="1011" binary n2=int(n1)+15; binary n3=n1-binary(7); n1.print(); n2.print(); n3.print(); cout<<int(n2)+5<<endl; cout<<n2-binary(5)<<endl; cout<<n3+binary(5)<<endl;

8、cout<<int(n3)-5<<endl; getch(); return 1; 基本要求l 阅读下列程序,根据题意要求在 处填上合适的内容完成程序。l 上机录入、调试上面程序。l 运行程序,纪录并分析运行结果是否正确。分析与思考l 将 + 、 - 运算符定义为binary类的成员函数。l 重载运算符 、 & 、 | 分别将二进制数按位取反、数按位与及按位或。(2)编写一个集合类,重载+(并集)、-(差集)、*(交集)、<<(输出)、>>(输入)等函数。5.实验过程解:(1)num%2=0?'0':'1'

9、(2)n2.bitsi='0'?0:1(3)value*26. 分析与思考注:由于一些问题不会处理,思考题没能做出来,参考答案,尽力理解后完成的。解:1、#include <iostream>#include <string>#include <conio.h>using namespace std;class binary char bits16; public: binary(char *); binary(int); binary operator +(binary); binary operator -(binary); operat

10、or int(); void print(); binary:binary(char *num) int isrc=strlen(num)-1; int idest=15; while(isrc>=0 && idest>=0) bitsidest-=(numisrc-='0'?'0':'1'); while(idest>=0) bitsidest-='0' binary:binary(int num) for(int i=15; i>=0;i-) bitsi=(num%2=0?'0&

11、#39;:'1'); num>>=1; binary binary:operator +(binary n) unsigned carry=0; unsigned value; binary res="0" for(int i=15; i>=0; i-) value=(bitsi='0'?0:1)+(n.bitsi='0'?0:1)+carry; res.bitsi=(value%2=0?'0':'1'); carry=value>>1; return res; b

12、inary binary:operator -(binary n) unsigned borrow=0; int value; binary res="0" for(int i=15; i>=0; i-) value=(bitsi='0'?0:1)-(n.bitsi='0'?0:1)+borrow; res.bitsi=(value=-1|value=1?'1':'0'); borrow=(value=-1|borrow!=0&&(value=0|value=1)?1:0); return

13、 res; binary:operator int() unsigned value=0; for(int i=0; i<=15; i+) value=( value*2)+(bitsi='0'?0:1); return value; void binary:print() char str17; strncpy(str,bits,16); str16='0' cout<<str<<"n" int main() binary n1="1011" binary n2=int(n1)+15; bi

14、nary n3=n1-binary(7); n1.print(); n2.print(); n3.print(); cout<<int(n2)+5<<endl; cout<<n2-binary(5)<<endl; cout<<n3+binary(5)<<endl; cout<<int(n3)-5<<endl; getch(); return 1;2、#include <iostream>#include <string>#include <conio.h>usin

15、g namespace std;class binary char bits16; public: binary(char *); binary(int); friend binary operator +(binary,binary); friend binary operator -(binary,binary); friend binary operator|(binary,binary); friend binary operator &(binary,binary); binary operator (); operator int(); void print(); bina

16、ry:binary(char *num) int isrc=strlen(num)-1; int idest=15; while(isrc>=0 && idest>=0) bitsidest-=(numisrc-='0'?'0':'1'); while(idest>=0) bitsidest-='0' binary:binary(int num) for(int i=15; i>=0;i-) bitsi=(num%2=0?'0':'1'); num>&g

17、t;=1; binary operator +(binary n1, binary n2) unsigned carry=0; unsigned value; binary res="0" for(int i=15; i>=0; i-) value=(n1.bitsi='0'?0:1)+(n2.bitsi='0'?0:1)+carry; res.bitsi=(value%2=0?'0':'1'); carry=value>>1; return res; binary operator -(bi

18、nary n1, binary n2) unsigned borrow=0; int value; binary res="0" for(int i=15; i>=0; i-) value=(n1.bitsi='0'?0:1)-(n2.bitsi='0'?0:1)+borrow; res.bitsi=(value=-1|value=1?'1':'0'); borrow=(value=-1|borrow!=0&&(value=0|value=1)?1:0); return res; bina

19、ry operator |(binary n1,binary n2)int value;binary res="0" for(int i=15; i>=0; i-) value=(n1.bitsi='0'?0:1)+(n2.bitsi='0'?0:1); if (value=0) res.bitsi='0' else res.bitsi='1' return res; binary operator &(binary n1,binary n2)int value;binary res="0" for(int i=15; i>=0; i-) value=(n1.bitsi='0'?0:1)+(n2.bitsi='0'?0:1); if (value=2) res.bitsi='1' else res.bitsi='0' return res; binary binary:operator () int i; for(i=0;i<=15;i+) if(bitsi='0') bitsi='1' else break; for(i=15;i>=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论