通用排序函数库的设计.docx
- 文档编号:9253120
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:13
- 大小:215.01KB
通用排序函数库的设计.docx
《通用排序函数库的设计.docx》由会员分享,可在线阅读,更多相关《通用排序函数库的设计.docx(13页珍藏版)》请在冰点文库上搜索。
通用排序函数库的设计
通用排序函数库的设计
目录
一、设计目的------------------------------------------------3
二、详细设计(个性函数详细描述)----------------------------4
三、调试与测试-----------------------------------------------9
四、源程序清单和执行结果------------------------------13
一设计目的
1)掌握模板和重载的基本结构以及C++语言的基本知识和技能;
2)基本掌握面向对象程序开发的基本思路和方法;
3)利用所学的基本知识和技能,进行简单通用的排序函数库的设计,
课程设计是我们的主要教学实践环节,通过课程设计我们围绕基础课或者专业课,运用学的知识,结合实际应用设计而进行的一次综合分析设计能力的训练.
课程设计的宗旨在与培养我们在本课程范围内,初步掌握解决实际应用问题时所应具备的查阅资料,综合运用所学知识的能力,为毕业设计及今后从事专业工作打下基础.
通过本次课程设计,能够锻炼我们的动手能力,使我们能够很好的巩固这一个学期所学的知识内容,掌握工程软件设计的基本方法,强化了我们上机动手的能力,通过这次的课程设计,我们感觉到了以前学习的不足,以及在学习的过程中遇到的问题,能使我们对学过的知识加深理解,为后续学的计算机专业课,打下坚实的基础.
在课程设计过程中我们感觉到了,团体合作的重要性,我们组几个人进行合作分工,提高了设计的效率,充分体现了团体精神,为以后出去在社会上工作时的合作精神奠定了基础,能够感觉到合作的重要性.还有在老师的指导下我们我们才能顺利的进行设计,感觉到了老师的重要性,有了老师我们设计才有了方向目标.
二详细设计
1)首先定义自定义类型typedefstructstudent
{
intid;//学号
charname[20];//姓名
booloperator>(conststudent&b)//比较大小
{
returnid>b.id;
}
operator=(conststudent&b)//复制函数
{
id=b.id;
strcpy(name,b.name);
}
friendostream&operator<<(ostream&os,conststudent&s)//输出函数
{
os< returnos; } }ss; 其次定义类模板实现相关排序: template voidsort(Type*p,intn) { for(inti=0;i for(intj=i+1;j if(*(p+i)>*(p+j))//相当于p[i]>p[j],p[i]=*(p+i) { Typetemp=*(p+i); *(p+i)=*(p+j); *(p+j)=temp; } } 再次设计一个类模板的输出函数如下 template voiddisplay(Type*p,intn) { for(inti=0;i { cout<<*(p+i)<<""; } cout< } 最后设计主函数实现函数的调用等主要功能。 2)简单绘图板程序 详细图如下: 此图形图像处理机具有如下功能: 1、能对任意数值进行排序 2、可以对任意字符和字符串数据进行排序 3、能对自定义的结构体按数值关键字排序 突出C++语言与其它语言不同点(即体现C++的高级功能,如bool重载运算符和类模板巧妙的实现各种类型的排序)。 三调试与测试: 开始没有自定义类型,后面就查资料,上网,最后终于会加了,重载了一个bool类型 booloperator>(conststudent&b)//重载“>”比较大小 { returnid>b.id; } operator=(conststudent&b)//复制函数 { id=b.id; strcpy(name,b.name); } friendostream&operator<<(ostream&os,conststudent&s)//输出函数 { os< returnos; } 这才有了自定义的结构体,刚开始我们只能够进行初始化数组,才能进行排序如下: inta[PERSON_AMOUNT]={5,4,1,10,3,7}; charb[PERSON_AMOUNT]={'j','a','r','p','b','m'}; stringc[PERSON_AMOUNT]={"student","teacher","you","we","hello","good"}; doubled[PERSON_AMOUNT]={9.12,5.43,4.12,1.67,3.41,21.4}; ssS[PERSON_AMOUNT]={{15,"LiMing"},{12,"WangXiao"},{8,"ZhangSan"},{3,"LiuLi"},{7,"XuCan"},{6,"SanDi"}}; 输出如下: 这样子的话又考虑到用户不方便进行应用,所以我们就又讨论可不可以让用户自己输入数据,上网搜了许多资料,都显示要用重载函数实现输入,但是能力有限,只好应用所学尽量达到用户的需求,终于程序修改符合了要求,改的如下: cout<<"inputinta[i]: "; for(i=0;i { cin>>a[i]; } cout<<"inputcharb[i]: "; for(i=0;i { cin>>b[i]; } cout<<"inputstringc[i]: "; for(i=0;i { cin>>c[i]; } cout<<"inputdoubled[i]: "; for(i=0;i { cin>>d[i]; } cout<<"inputidNo.: "; for(i=0;i { cin>>S[i].id; } cout<<"inputname: "; for(i=0;i { cin>>S[i].name; } 这样的话实现程序见下: 四源程序清单和执行结果 #include #include usingnamespacestd; usingstd: : ostream; usingstd: : istream; #definePERSON_AMOUNT6 typedefstructstudent { intid;//学号 charname[20];//姓名 booloperator>(conststudent&b)//重载“>”比较大小 { returnid>b.id; } operator=(conststudent&b)//复制函数 { id=b.id; strcpy(name,b.name); } friendostream&operator<<(ostream&os,conststudent&s)//输出函数 { os< returnos; } }ss; template voidsort(Type*p,intn) { for(inti=0;i for(intj=i+1;j if(*(p+i)>*(p+j))//相当于p[i]>p[j],p[i]=*(p+i) { Typetemp=*(p+i); *(p+i)=*(p+j); *(p+j)=temp; } } template voiddisplay(Type*p,intn) { for(inti=0;i { cout<<*(p+i)<<""; } cout< } intmain() { inta[PERSON_AMOUNT]; charb[PERSON_AMOUNT]; stringc[PERSON_AMOUNT]; doubled[PERSON_AMOUNT]; ssS[PERSON_AMOUNT]; inti; cout<<"originalsort: \n"; cout<<"inputinta[i]: "; for(i=0;i { cin>>a[i]; } cout<<"inputcharb[i]: "; for(i=0;i { cin>>b[i]; } cout<<"inputstringc[i]: "; for(i=0;i { cin>>c[i]; } cout<<"inputdoubled[i]: "; for(i=0;i { cin>>d[i]; } cout<<"inputidNo.: "; for(i=0;i { cin>>S[i].id; } cout<<"inputname: "; for(i=0;i { cin>>S[i].name; } cout< cout<<"newsort: \n"; sort(a,PERSON_AMOUNT);//整型数据排序 display(a,PERSON_AMOUNT); sort(b,PERSON_AMOUNT);//字符排序 display(b,PERSON_AMOUNT); sort(c,PERSON_AMOUNT);//字符串排序 display(c,PERSON_AMOUNT); sort(d,PERSON_AMOUNT);//浮点型数据排序 display(d,PERSON_AMOUNT); sort(S,PERSON_AMOUNT);//结构体排序 display(S,PERSON_AMOUNT); return0; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通用 排序 函数库 设计