




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验11 运算符重载(1)一、实验目的 1、掌握运算符重载的概念;2、掌握使用friend重载运算符的方法。二、实验内容1、用成员函数重载运算符,使对整型的运算符=、+、-、*、/ 适用于分数运算。要求:(1)输出结果是最简分数(可以是带分数);(2)分母为1,只输出分子。2、用友元函数重载运算符,使对整型的运算符=、+、-、*、/ 适用于分数运算。3、定义如下集合类的成员函数,并用数据进行测试:class Setint *elem; /存放集合元素的指针int count; /存放集合中的元素个数public:Set();Set(int s,int n);int find(int x) const; /判断x是否在集合中Set operator+(const Set &); /集合的并集Set operator-(const Set &); /集合的差集Set operator*(const Set &); /集合的交集void disp(); /输出集合元素;4、定义一个人民币类 RMB,包含私有数据成员元、角、分,请用友元函数重载运算符“+”和“+”,以对类对象进行运算。3、 实验程序及结果1.#includeusing namespace std;class Complexpublic: Complex(int X=0,int Y=0) /构造函数初始化 x=X;y=Y;void gys() /求最大公约数 int t; t=x%y; while(t!=1) x=y; y=t; t=x%y; void print() /输出分数值 int z; if(xy)&(y!=1) /分母大于分子直接输出 coutx/yy)&(y!=1) /分母小于分子输出带分数 z=x/y; coutz(x%y/y)endl; Complex operator+(Complex c); /声明运算符重载函数 Complex operator-(Complex c); Complex operator*(Complex c); Complex operator/(Complex c); private: int x,y;Complex Complex:operator+(Complex c) /定义+重载函数 Complex temp1; if(y!=c.y) temp1.y=y*c.y; temp1.x=x*c.y+c.x*y; return temp1;Complex Complex:operator-(Complex c) /定义-重载函数 Complex temp1; if(y!=c.y) temp1.y=y*c.y; temp1.x=x*c.y-c.x*y; return temp1;Complex Complex:operator*(Complex c) /定义*重载函数 Complex temp1; if(y!=c.y) temp1.y=y*c.y; temp1.x=x*c.x; return temp1;Complex Complex:operator/(Complex c) /定义/重载函数 Complex temp1; if(y!=c.y) temp1.y=y*c.x; temp1.x=x*c.y; return temp1;int main() Complex A1(3,2),A2(5,7),A3,A4,A5,A6; /定义六个类的对象 A1.print(); /输出分数 A2.print(); A3=A1+A2; /分数相加 A3.print(); A4=A1-A2; /分数相减 A4.print(); A5=A1*A2; /分数相乘 A5.print(); A6=A1/A2; /分数相除 A6.print(); return 0;2.(注释同上)#include/using namespace std;class Complexpublic: Complex(int X=0,int Y=0) x=X;y=Y;void gys() int t; t=x%y; while(t!=1) x=y; y=t; t=x%y; void print() int z; if(xy)&(y!=1) coutx/yy)&(y!=1) z=x/y; coutz(x%y/y)endl; friend Complex operator+(Complex& a,Complex& b);friend Complex operator-(Complex& a,Complex& b);friend Complex operator*(Complex& a,Complex& b);friend Complex operator/(Complex& a,Complex& b); private: int x,y;Complex operator+(Complex& a,Complex& b) Complex temp1; if(a.y!=b.y) temp1.y=a.y*b.y; temp1.x=a.x*b.y+b.x*a.y; return temp1;Complex operator-(Complex& a,Complex& b) Complex temp1; if(a.y!=b.y) temp1.y=a.y*b.y; temp1.x=a.x*b.y-b.x*a.y; return temp1;Complex operator*(Complex& a,Complex& b) Complex temp1; if(a.y!=b.y) temp1.y=a.y*b.y; temp1.x=a.x*b.x; return temp1;Complex operator/(Complex& a,Complex& b) Complex temp1; if(a.y!=b.y) temp1.y=a.y*b.x; temp1.x=a.x*b.y; return temp1;int main() Complex A1(3,2),A2(5,7),A3,A4,A5,A6,G; A1.print(); A2.print(); A3=A1+A2; A3.print(); A4=A1-A2; A4.print(); A5=A1*A2; A5.print(); A6=A1/A2; A6.print(); return 0;3.#includeusing namespace std;class Setint *elem; /存放集合元素的指针int count; /存放集合中的元素个数public:Set();Set(int s,int n);int find(int x) const; /判断x是否在集合中Set operator+(const Set &a); /集合的并集Set operator-(const Set &a); /集合的差集Set operator*(const Set &a); /集合的交集void disp(); /输出集合元素;Set:Set(int s,int n) /构造函数初始化elem=s;count=n;int Set:find(int x) const /判断x是否在集合中int n;for(n=0;ncount;n+)if(x=elemn)coutx在集合中endl;return 1;return 0;Set Set:operator +(const Set& a) /重载运算符+求两数组的并集Set temp;int k=0,m,n,p;int *b=new int k;for(n=0;na.count;n+)bk=a.elemn;k+;for(m=0;mcount;m+) /定义一个新数组,使其等于elem,找出另一个数组中不相等的数,放进另一个数组,两个新数组连接着输出,即为他们的并集for(n=0;na.count;n+)if(elemm=a.elemn)p=1;continue;for(m=0;mcount;m+)if(p!=1)bk=elemm;k+;coutendl;temp.count=k;temp.elem=b;return temp;Set Set:operator -(const Set& a) /定义重载运算符-用于计算差集Set temp;int p=0,m,n,q;int *b=new int p;for(m=0;mcount;m+) for(n=0;na.count;n+) /找出两数组不相等的数,把只是属于elem的数放进新数组中,输出即为A-B if(elemm=a.elemn)q=1; continue;for(m=0;mcount;m+) if(q!=1) bp=elemm; p+;coutendl; temp.count=p;temp.elem=b;return temp;Set Set:operator *(const Set& a) /定义重载运算符*计算两数组交集Set temp;int k=0,m,n;int *b=new int k;for(m=0;mcount;m+) /如果两数组的值相等,把相等的值放进新数组,输出即为交集 for(n=0;na.count;n+)if(elemm=a.elemn)bk=elemm;k+;coutendl;temp.count=k;temp.elem=b;return temp;void Set:disp()for(int i=0;icount;i+)coutelemi ;coutendl;int main()int aa4=1,2,3,4;int bb5=3,4,5,6,7; Set A,B,C,D,E;A=Set(aa,4);B=Set(bb,5);A.find(2);A.disp();B.disp();E=A*B;cout两个数组的交集为:endl;E.disp();C=A+B;cout两个数组的并集为:endl;C.disp();D=A-B;cout两个数组的差集为:endl;D.disp();return 0;4.#include/using namespace std;class Complexpublic: Complex(int X=0,int Y=0,int Z=0) x=X;y=Y;z=Z; void print() if(z=10) z=z-10; y=y+1; if(y=10) y=y-10; x=x+1; coutx元y角z分endl; Complex operator+(Complex c); /声明运算符重载函数 Complex operator+(); /声明自减运算符-重载成员函数(前缀) Complex operator+(int); /声明自减运算符-重载成员函数(后缀)private: int x,y,z;Complex Complex:operator+(Complex c) /定义+重载函数 Complex temp1; temp1.x=x+c.x; temp1.y=y+c.y; temp1.z=z+c.z; return temp1;Complex Complex:operator+() /定义+重载函数(前缀)+x;+y;+z;return *this;Complex Complex:operator+(int) /
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年度冶金工业技能鉴定自我提分评估含答案详解(考试直接用)
- 2023年度计算机一级考前冲刺练习附参考答案详解【黄金题型】
- 2024年自考专业(工商企业管理)题库(夺冠系列)附答案详解
- 2025一级建造师高频难、易错点题含答案详解【A卷】
- 2024一级建造师题库试题【名校卷】附答案详解
- 2025眉山职业技术学院单招《职业适应性测试》题库试题及参考答案详解【研优卷】
- 执业药师之《西药学专业一》复习提分资料(黄金题型)附答案详解
- 2025年上海商标审查协作中心公开招聘笔试高频难、易错点备考题库及答案详解1套
- 2024酒、饮料及精制茶制造人员题库检测试题打印含答案详解(夺分金卷)
- 2024-2025学年度临床执业医师综合提升测试卷及参考答案详解【完整版】
- 2024至2030年中国喷水推进器行业发展形势分析及市场前景趋势报告
- 陶渊明专题课件
- 人参培训课件
- 四川省价建筑地下结构抗浮锚杆技术标准
- 2023年航空公司招聘:机场安检员基础知识试题(附答案)
- 糖尿病临床病例分析经典案例
- 老年人体检分析报告总结
- 第4课《用联系的观点看问题》第2框《在和谐共处中实现人生发展》-【中职专用】《哲学与人生》同步课堂课件
- 计量安全防护
- 食品生物技术原理课件
- 制药工程专业导论
评论
0/150
提交评论