设计整数类1
更新时间:2024-03-18 17:59:01 阅读量: 综合文库 文档下载
《高级语言程序设计II实验》实验报告三
学生姓名: 班级: 学号:
一 问题描述
定义一个集合类,有如下的功能: (1)输出两个集合的交集 (2)输出两个集合的并集
(3)判断一个元素是否属于这个集合 (4)往集合里插入一个元素 (5)判断两个集合是否相等 二、实验环境
在codeblock,等编译环境下都能用。
二 程序设计 (此处占分最重,请尽量详细描述) // 描述如何设计程序的文件结构,各文件中主要内容,对于自定义类可用UML图描述各个类的接口 如:
1. 文件结构及类描述
test1.cpp vehicle.h
主函数 main() jh p(3),y(4); (p-y).show(); (p+y).show(); (p<3).showcha(); jh q(3),w(3); (q>w).showdeng(); (q*8).showshu(); return 0; Vehicle接口 jh operator -(jh &p); jh operator +(jh &m); jh operator <(int y); jh operator >(jh &q); jh operator *(int u) ~jh(){}; Void showdeng();//show Void show(); void showcha(); void showshu() 实现 void jh::showcha() void jh::showshu() jh jh::operator *(int u) void jh::showdeng() jh jh::operator >(jh &q) jh::jh(int q) jh jh::operator <(int y) jh jh::operator -(jh &p) jh jh::operator +(jh &m) void jh::show() 2.主要算法描述; jh jh::operator >(jh &q) {
int j,k;
if(i!=q.i)//两个集合个数不相等 {
q.flag=0; }
if(i==q.i)//两个集合个数相等 {
for(j=0;j
for(k=0;k if(a[j]!=q.a[k])//如果第一个集合的元素和第二个集合的元素不相等 { q.flag=0; } else if(a[j]==q.a[k])//如果第一个集合的元素和第二个集合的元素相等,就填出循环 { q.flag=1; break; } } if(q.flag==0)//如果第一个集合中的某元素和第二个集合中任意一个都不相等,那就跳出整个循环 { break; } } } return q; } 三 程序代码 #include jh operator -(jh &p);//算出这两个集合的交集 jh operator +(jh &m);//算出这两个集合的并集 jh operator <(int y);//插入一个元素 jh operator >(jh &q);//判断两个集合是否相等 jh operator *(int u);//判断这个元素是否属于这个集合 ~jh(){}; void showdeng();//show出两个集合是否相等 void show();//输出集合的元素 void showcha();//show出插入元素是否属于这个集合或者show插入之后的新集合 void showshu();//show出这个元素是否属于这个集合 private: int a[100],i,flag;//flag用于多出的判断 }; void jh::showcha() { int j; if(flag==0) { cout<<\此集合已存在此元素\ } if(flag==1) { cout<<\新集合为S={\ i++;//通过i++来限制新加元素能否输出 for(j=0;j cout< cout<<\ } } void jh::showshu() { if(flag==1) { cout<<\这个元素属于这个集合\ } if(flag==0) { cout<<\这个元素不属于这个集合\ } } jh jh::operator *(int u) { int j; jh b; for(j=0;j if(u==a[j]) { b.flag=1; break;//找到这个元素与集合的任何一个元素相等之后终止循环 } else if(u!=a[j]) { b.flag=0;//此元素不属于这个集合通过flag来表示 } } return b; } void jh::showdeng() { if(flag==0) { cout<<\这两个集合不相等\ } if(flag==1) { cout<<\这两个集合相等\ } } jh jh::operator >(jh &q) { int j,k; if(i!=q.i)//两个集合个数不相等 { q.flag=0; } if(i==q.i)//两个集合个数相等 { for(j=0;j for(k=0;k if(a[j]!=q.a[k])//如果第一个集合的元素和第二个集合的元素不相等 { q.flag=0; } else if(a[j]==q.a[k])//如果第一个集合的元素和第二个集合的元素相等,就填出循环 { q.flag=1; break; } } if(q.flag==0)//如果第一个集合中的某元素和第二个集合中任意一个都不相等,那就跳出整个循环 { break; } } } return q; } jh::jh(int q)//集合的构造函数 { int j; i=q; for(j=0;j cout<<\输入集合的元素a[\ cin>>a[j]; } } jh jh::operator <(int y) { int j; jh b; b.i=i; b.a[b.i]=y;//把这个元素先给集合b for(j=0;j b.a[j]=a[j];//把集合中的元素给b } for(j=0;j if(y==a[j])//判断插入的集合是否属于集合 { b.flag=0; break; } else { b.flag=1; } } return b; } jh jh::operator -(jh &p) { int j,k; jh b; for(j=0;j for(k=0;k if(a[j]==p.a[k])//找出两个集合中相等的元素 { b.a[b.i]=a[j]; b.i++; } } } return b; } jh jh::operator +(jh &m) { jh b; int k,j,flag=2; for(j=0;j for(k=0;k if(a[j]==m.a[k])//先剔除两个集合中相同的元素 { flag=1; break; } } if(flag==2) { b.a[b.i]=a[j];//把不相等的元素存入b集合中 b.i++; } } for(k=0;k b.a[b.i]=m.a[k]; (b.i)++; } return b; } void jh::show() { int j; cout<<\此集合为a[\ for(j=0;j cout< cout<<\} int main() { jh p(3),y(4); (p-y).show(); (p+y).show(); (p<3).showcha(); jh q(3),w(3); (q>w).showdeng(); (q*8).showshu(); return 0; } 四 程序 运行结果 五 实验总结 // 描述实验过程中遇到的困难及解决办法;描述程序存在的不足及可能的改进方案; (1)灵活运用break语句; (2)在定义集合类的构造函数时要有一个无参数的来实现返回值; (3)在写集合的交集并集时解决私有成员i++的问题; (4)在插入一个元素和判断一个元素是否属于该集合时要注意简便的算法; (5)不能忘记写析构函数; (6)对运算符重载的符号运用不灵活。
正在阅读:
设计整数类103-18
没核心技术利润微薄 智能制造业如何突围?10-31
siRNA非病毒递送载体的研究现状05-30
第3章 植物的激素调节 单元检测05-02
高中网络技术应用复习资料(习题)10-24
广东省广州市二年级下学期语文期中考试试卷04-17
行政管理论文范文参考文献(最新篇)03-14
常用的软件测试面试题08-27
Stroop效应实验03-29
自动控制填空问答题知识点总结04-08
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 整数
- 设计
- D触发器 - 图文
- 2018-2019年安顺市镇宁县本寨镇关山小学小学一年级上册语文模拟
- 物流学复习要点(2014-2015学年第二学期)
- 日光灯实验
- 2015上海事业单位考试热点:伤不起的“北京户口”
- 绪论与第一讲
- 2011年下半年安徽会计从业资格无纸化考试用友T3标准版具体模拟操
- 2018部编版一年级语文下册第三单元教学设计
- 培养和提高小学生数学素养点滴
- 测树学
- Revit结构建模之钢筋
- 好看好看
- 二年级数学下册《用方向和距离确定位置》教学设计
- 2018-2019年苏教版语文七年级上期末考试一
- 2011-2012学年度第二学期高二文科数学综合测试卷
- 2018-2019优秀心得体会范文:新会计准则的学习心得体会-word范文
- 轻轻松松做中层试题 - 图文
- 高中信息技术 信息技术全套教案 粤教版必修1 - 图文
- Visual C++第03章 MFC基本应用程序的建立
- 提高多坡屋面混凝土浇筑质量 - 图文