版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录1.需求分析11.1问题描述:11.2基本要求:11.3测试数据:12.概要设计12.1集合的数据类型定义为:12.2.各种函数的功能:23.详细设计24.编码实现45.调试分析65.1程序运行界面如下图:65.2遇到的问题以及解决方法:76.课设总结77.参考文献81.需求分析1.1问题描述:编制一个能演示执行集合的并、交和差运算的程序。1.2基本要求:集合的元素限定为小写字母符a.z ,集合的大小n<27。集合输入的形式为一个以"回车符"为结束标志的字符串,串中字符顺序不限,且允许出现重复字符或非法字符,程序应能自动滤去。输出的运算结果字符串中将不含重复字符或
2、非法字符。演示程序以用户和计算机的对话方式执行。1.3测试数据:(1)输入集合个数为2,分别为a,b,e,d,f,c,f,g,n,选择集合运算类型为求集合的交集。(2)输入集合个数为3,分别为a,b,c,g,h,n,k,k,z,a,选择运算类型为求集合的并集。(3)输入集合个数为2,分别为b,c,d,c,d,f,选择运算类型为集合的差(4)输入集合个数为2,分别为a,b,x,&,1,3,4,a,b,c,f,g,1,4,选择集合的运算类型为集合的并集。2.概要设计2.1集合的数据类型定义为:struct Set int num;bool hash30;num为集合的元素个数hash为利用
3、哈希表,用来储存集合的元素。2.2.各种函数的功能:1.void InitSet(Set &Res)操作结果:初始化集合的函数,函数参数为引用类型。2.Set DealSet(char *s)初始条件:指针s不为空操作结果:将字符串处理成集合,生成的集合为函数返回值。3.void PriSet(Set s)操作结果:打印集合s。4.Set Jiao(Set sa,Set sb) 操作结果:实现集合交集的函数,交集为函数返回值。5.Set Bing(Set sa,Set sb)操作结果:实现集合并集的函数,并集为函数返回值。6.Set Cha(Set sa,Set sb)操作结果:实现集
4、合差的函数,差集为函数的返回值。7.int main()操作结果:主函数,调用以上的各函数,实现系统界面的功能。3.详细设计1.void InitSet(Set &Res):利用c+引用类型,对Res集合进行初始化,使用memset初始化hash数组的所有值,并将集合元素个数赋值为0.2.Set DealSet(char *s):用for循环遍历字符数组s,如果字符在a-z之间,则加入hash数组之中,并将元素个数增加。3.void PriSet(Set s):输出集合s,首先输出左花括号,之后使用for循环遍历整个hash数组,如果hash数组的值为真,则说明该集合包含此项元素,输出
5、该元素加空格,之后再输出右花括号。4.Set Jiao(Set sa,Set sb) 定义两个形参集合sa和sb,遍历两个集合的hash数组,如果两个hash数组的值同时为真,则说明sa和sb集合都含有该元素,则将该元素加入函数之中定义的Res集合,并将Res集合的元素个数加一。在程序最后返回Res集合的值。5.Set Bing(Set sa,Set sb)和Jiao()函数类似,同样遍历hash数组,唯一不同的是判断hash数组的语句,只要sa和sb其中有一个的值为真,则加入到Res中。6.Set Cha(Set sa,Set sb)同样和Jiao()函数类似,判断语句改为如果sa的hash
6、为真并且sb的hash不为真,则加入到Res中7.int main()为设计程序主页面的函数,并且使用了所有的函数。主函数流程图具体算法流程图为:程序结束并集差集交集交集交集输入运算类型输入各个集合NoYes判断n是否为0输入集合个数输出提示信息程序开始4.编码实现主要的代码为:#include<iostream>#include<cstring>#include<cstdlib>#include<cstdio>using namespace std;struct Set /定义集合类型 int num;/集合元素个数 bool hash30;/
7、集合使用哈希表进行保存MySet10;/集合数组void InitSet(Set &Res)/初始化集合的函数 memset(Res.hash,false,sizeof(Res.hash);/把哈希表所有值赋值为false Res.num=0;/元素个数为0Set DealSet(char *s)/将字符串处理成集合 Set Res;/函数返回的集合 InitSet(Res);/初始化集合 for (int i=0;i<strlen(s);i+)/遍历整个字符串 if (si>='a' && si<='z')/在a到z之
8、间,才符合集合元素范围 Res.hashsi-'a'=true;/加入哈希表 Res.num+;/集合元素增加 return Res;/函数返回集合void PriSet(Set s)/打印集合 if (!s.num)/集合为空,输出为空集 cout<<"空集!"<<endl; return; cout<<" "/不为空,输出所有元素 for (int i=0;i<27;i+) if (s.hashi) cout<<(char)(i+'a')<<"
9、 " cout<<""Set Jiao(Set sa,Set sb) /实现集合交集的函数 Set Res;/返回的集合 InitSet(Res);/初始化 for (int i=0;i<27;i+) if (sa.hashi && sb.hashi)/如果两个集合都有该元素,则加入返回的集合/如果是Bing函数,则该语句为:if (sa.hashi | sb.hashi)/如果是Cha函数 ,则该语句为:if (sa.hashi && !sb.hashi) Res.hashi=true; Res.num+; re
10、turn Res;5.调试分析5.1程序运行界面如下图:集合相交的运行界面:集合相并的运行界面:集合相差的运行界面:5.2遇到的问题以及解决方法:1.编码上基本没有遇到重大的问题,一开始写程序的时候没有定义集合类型,直接使用hash数组代表集合,没有把握住数据结构的算法实质。导致了程序结构混乱,并且不易维护调试,更改界面。2.开始实现了大多数的程序功能,但是人机交互页面做的不够人性化和美观,在后期处理中加入了界面美化和提示功能,可以更加人性的提示用户进行操作。3.开始没有使用memset进行初始化,后来改用该函数,使得程序更加短小容易理解。6.课设总结数据结构是计算机程序设计的重要理论技术基础
11、,它不仅是计算机科学的核心课程,而且也已经成为其他理工专业的热门选修课。随着高级语言的发展,数据结构在计算机的研究和应用中已展现出强大的生命力,它兼顾了诸多高级语言的特点,是一种典型的结构化程序设计语言,它处理能力强,使用灵活方便,应用面广,具有良好的可移植性。数据结构课设使我们巩固了以前的知识并在此基础上还对数据结构的特点和算法有了更深的了解,使我们在这门课程的实际应用上也有了一个提高。 首先这两周的学习,使我们在巩固了原有的理论知识上,又培养了灵活运用和组合集成所学过知识及技能来分析、解决实际问题的能力,使我们体会到自身知识和能力在实际中的应用和发挥。其次,它激发了我们创新意识,开发创造的能力和培养沟通能力。另外,让我们进一步熟悉了数据结构的设计应用。每一处编码都是在反复的熟悉数据结构的结构特性,及其语法、函数和程序设计思想的过程,对我们数据结构的学习和提高很有益处,并且使我们明白了程序设计过程,如解决一些实际问题,从解决实
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 糕点面包烘焙工风险评估与管理强化考核试卷含答案
- 基础设施基金投资风险评估协议范本
- 03 板块一 专题一 任务一 学案3 掌握文言实词推断7法
- 统编版历史八年级上册第10课《帝制复辟与军阀割据》教学课件
- 成都市高中学阶段教育学校2027届数学八年级第一学期期末调研试题含解析
- 广东省深圳市坪山区中学山中学2027届七上数学期末统考试题含解析
- 2026年茶艺师四级(中级)资格考试理论知识全真模拟考试卷及答案(共八套)
- 定岗工作总结(5篇)
- 公司保安队长年终总结(8篇)
- 人事助理工作总结范文(31篇)
- 雨课堂学堂云在线《论语中的“礼”与西方礼仪(暨南 )》单元测试考核答案
- GB/T 46412-2025资产管理碳资产管理体系应用指南
- 1.1走进互联网世界课件-七年级上册《信息技术》西大版
- 脊柱侧弯课件
- 2025年成人高考专升本《政治》真题(含答案)
- 生命早期一千天课件
- XX县XX镇XX中学改造扩建工程项目可行性研究报告
- JG/T 169-2016建筑隔墙用轻质条板通用技术要求
- 低压电气箱内置自动消防技术规范
- 《陶瓷釉下彩绘技艺》课件
- 鸟类分类培训课件
评论
0/150
提交评论