2023年数据结构与算法分析实验报告川大_第1页
2023年数据结构与算法分析实验报告川大_第2页
2023年数据结构与算法分析实验报告川大_第3页
2023年数据结构与算法分析实验报告川大_第4页
2023年数据结构与算法分析实验报告川大_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

《数据结构与算法分析》课程设计报告文本编辑课题名称:文本编辑课题设计人(学号):刘佳玉4指导教师:朱宏评阅成绩:!评阅意见:二提交报告时间:2013年12月22日十bianji.Showwenben();〃显示文本10、当用户选择重置(new)功能时,五、源程序清单:该程序代码分为3部分,分别是:1、模板类的代码,文献名"linklist.h",相应代码:#ifndefLINKLIST_H_#defineLINKLIST_H_#include<iostream>usingnamespacestd;template<classElemType>//队列的模板类classLinkList{privatc:ElemTypewenben[256][256];〃创建一个二维数组作为存储文本的空间inthang;〃数组的行intlie;〃数组的列public:LinkList()//构造函数°{。hang=1;//初始化行数为1olie=l;//初始化列数为1-wenben[O][O]=,a';//初始化文本为匕'。〜LinkList(){}//析构函数voidXiugaiwenben(inthl,int11,inth2,int12)//修改文本,将文本中h2行12列的“〃字符赋给hl行11列wenbenfh1][11]=wenben[h2][12];)voidFuzhiwenben(inth,int1)〃给文本中h行1列赋一个字符。{^cin»wenben[h][l];)oE1emTypeFindwenben(inth,int1)〃返回h行1列的字符°{^rcturnwcnbcn[h][1];}0VoidSethang(inth)〃设定数组的行数(hang=h;ointGethang()〃得到数组的行数^returnhang;°)ovoidSetlie(int1)//设定数组的列数°(lie=l;}ointGet1ie()//得到数组的列数{。return1ie;ovoidSetwenben()//设立一个文本°{°inti,j;ofor(i=0;i<hang;i++)°{gcoutvV”请输入第”Wi+lW”行的文本:“VVendl;“for(j=0;j<lie;j++)°(coutvv”请输入第”vvi+lvv”行第”vvj+lvV列的字符”vvend1;。cin»wenben[i][j];000])voidShowwenben()//显示当前文本6(®cout«"当前文本是:“VVend1;°inti,j;“for(i=0;i<hang;i++)oofor(j=0;j<lie;j++)°(。®cout«wenben[i][j];6}®cout<<endl;}q};#endif2、编辑类的代码,文献名是“editor.h",相应代码:#includelink1ist,h”classEditor(private:linkList<char>bianji;〃模板类的char型对象,用来调用模板类中的函数intcount;〃在使用查找功能时用来判断是否要查找的文本在当前文本中public:ovoidChushihua()//设立文本的函数。cout«na代表自己输入文本,b代表使用电脑设立的文本”vvend1;ocout<<"请输入你的选择:"〈Vendl;ocharch;ocin»ch;switch(ch)//对用户的不同选择执行不同的代码°{6case匕'://当用户选择自行输入文本时coutvv”请输入文本的行数:”;“nth;cin>>h;®6cout«endl;scoutVv”请输入文本的列数:”;inti;“cin»l;bianji.Sethang(h);〃设立文本的行数。由ianji.Set1ie(1);〃设立文本的列数gbianji.Setwenben();//输入文本eobianji.Showwenben();〃显示文本break;•case'b,:〃当用户选择使用电脑设立的文本时bianji.Showwenben();〃显示初始化的文本obreak;ovoidEdite()〃编辑文本的函数“charch='sz;//初始化ch“whi1e(ch!-qf)//当ch!=q时,就不会退出循环(coutVv”i代表插入文本”;oocout«nR代表移除文本”;ocoutvv一代表替换文本”;coutvv”f代表查找文本”;“ocoutvv”S代表显示当前文本”;。cout«"n代表重新建立一个文本”;bCoutVv”q代表退出"«endl;℃outVV”请输入你的选择:";“cin»ch;switch(ch)//根据用户的不同选择执行不同的代码“ocase,i':〃选择插入(insert)功能bianji.Showwenben();//显示当前文本。ocout«*'请问要插入到第几行?:”;ointhO;gcin»h0;TOC\o"1-5"\h\zwowhile(hO>bianji.Gethang()||h0<1)〃假如要插入的行大于已有的最大行或者小于第一行就会规定重新输入一个000{00c0UtVV”输入错误,请重输:”;cin>>hO;00)。“bianji.Sethang(bianji.Gethang()+l);//当前行数加1ointi,j;3ofbr(i=bianji.Gethang()—1;i>=h0;i—)//把要插入行及后面的行的文本往后一次移一行6{“for(j=0;j<bianji.Getlie();j++)000{3abianji.Xiugaiwenbcn(ij,i-l,j);00}“for(i=0;i<bianji.Getlie();i++)//输入要插入的那一行的文本。cout«"请输入第n«h0«"行第“vvi+lVV”个字符:“;3gbianji.Fuzhiwenben(hO-l,i);3cout<<endl;Odo}bbianji.Showwenben();//显示文本“break;oocase'R:〃选择移除(remove)功能o®bianji.Showwenben();-coutvv”请问要移除哪一行?:”;inthl;“cin>>hl;oowhilc(hl>bianji.Gethang()IIhlvl)〃假如要移除的行大于已有的最大行或者小于第一行就会规定重新输入一个。{“coutVV”输入有误,请重输:”;。cin>>hl;0)aabianji.Sethang(bianji.Gethang()-1),将当前行数减1“inti1,j1;ofor(il=hl-1;il<bianji.Gethang();il++)〃把要移除的行的后面的行一次往前移一行就顺便把要移除的那一行给覆盖00//了,从而达成移除的效果。。。for(j1=0;j1<bianji.Getlie();j1++)6(3o3bianji.Xiugaiwenben(il,j1,i1+1,j1);000}00}o。。bianji.Showwenben();fibreak;^caseT'://选择替换(rep1ace)功能o“bianji.Showwenben();0。。COUt<<要替换哪一行?:";。“inth2;ofcin»h2;“inti2;g3for(i2=0;i2<bianji.Getlie();i2++)〃得到要替换的那一行的列数,然后输入新的文本6{。ocoutvv”请输入第"vvh2vv”行第“vvi2+1vv”个字符:";gbianji.Fuzhiwenben(h2—1,i2);ocout<<endl;“。。bianji.Showwenben();0“break;“ocasef:〃选择查找(find)功能bianji.Showwenben();“coutVv”请输入要查找的文献:"wend1;o。。。inti3,j3;count=O;。ofor(i3=0;i3<bianji.Getlie();i3++)//根据当前文本的列数来输入要查找的文本006{-coutVV”请输入第“vvi3+lvv”列的字符:”;a^bianji.Fuzhiwcnben(bianji.Gethang(),i3);〃将输入的文本放到当前的最后一行,只是暂时的。。}//在这个功能完了后就会消失,由于没有改变文本的行列/*cout〈v"第”vvh3〈V”行的文本是:"Vvendl;〃输入行数就会将当前文本中那一行的文本输出0for(i3=0;i3<bianji.Getlic();i3++)000{o。。。cout«bianji.Findwenben(h3-1,i3);0。}*/。。for(i3=0;i3<bianji.Gethang();i3++)//根据输入的文本,一行一行的搜,将每一行的文本域输入的文本进行匹配文本编辑器计算机科学与技术专业学生刘佳玉指导老师朱宏[摘要]文本编辑器(或称文字编辑器)是用作编写普通文字的应用软件,它与文档编辑器(或称文字解决器)不同之处在于它并非用作桌面排版(例如文档格式解决)。它常用来编写程序的源代码。专业的计算机用户使用的文本编辑器往往不限制打开文献的大小。这样的编辑器在编辑大文献时,启动仍然不久,并且它们还可以编辑超过内存大小的文献。而简朴的文本编辑器通常直接把文献读至内存。这样在解决较大文献时速度较慢,对于更大的文献,则干脆无法解决。我所做的这个文本编辑器包含插入、移除、替换、查找、显示和新建的功能,是一种简朴的文本编辑器。关键词:简朴的文本编辑器插入移除替换查找显示新建一、实验名称:文本编辑器二、实验的目的和规定:.采用C++的ASCII码文献和串函数实现;.纯熟掌握串运算的应用;.纯熟掌握计算机系统的基本操作方法,了解如何编辑、编译、链接000假如匹配成功就会输出相应的行数“呵3=0;o®whi1e(bianji.Findwenben(i3,j3)==bianji.Findwenben(bianji.Gethang(),j3)&&j3<bianji.Getlie())00{»“°j3++;〃相同就会在查下一列的字符是否相同,直到这一行完了0)if(j3==bianji.Getlie())°{“cout«n你要找的文本在第”v<i3+1vv”行”«endl;oocount+=l;TOC\o"1-5"\h\z00}000}“”f(count==0)000{3oocout«”你要找的文本不在现有文本中”<vend1;00}“cout«endl;reak;oeecase's':〃选择显示当前文本fibianji.Showwenben();obreak;3case'n7:〃选择重置(new)功能oointh4,14;0。。C0Ut<<”请输入新的行数:";oecin>>h4;oooobianji.Sethang(h4);//新行coutw”请输入新的列数:”;ocin»14;。“bianji.Setlie(14);〃新列obianji.Setwenben();〃新文本bianji.Showwenben();〃显示文本obreak;case*q*:obreak;};3、主函数的代码,文献名是“main.cpp",相应代码:#includeH1inklist.h"#include"editor.h"intmain()

Editore://编辑类的对象,用来调用类中的函数oe.Chushihua();//调用设立文本的函数e.Edite();//调用编辑文本的函数©return0;六、运营结果:1、选择自己输入文本(a),输入文本为(3行2歹IJ):ty»*E:\devc++\cpp\test_editor2\Debug\test_editor2.exe"代表自己输入文本,b代表使用电脑设置的文本请输点尔的送择:清输入文本的行数:3得仃才得仃才11章第^<入主R主R主0E得仃才11章第^<入主R主R主0E请输入第得仃才11章第^<入主R主R主0E请输入第2行第1列的字符:青输入第2行第2列的字符学箴翻整葡岳字符储输入第3行第2列的字符y当前文本是:qtier进行插入操作(i),插入文本as到第2行:

2请输入第2行第2个字符:当前文本是:qwaser进行移除操作(R),移除第3行文本:鳖表M2请输入第2行第2个字符:当前文本是:qwaser进行移除操作(R),移除第3行文本:鳖表M弋RR1本:笨选:舒立你本饕人文N代表替换文本f代表查找文本s代表显示当前文本n代表q,Ae:“曹qwast1衰要文回刖案颦3烫M弋臂手遭二代表替换文本£代表查找文本s代表显示当前文本n代表.歌施黛拿代表乙雪箭文本意qwasa请输入第1行第2个字符:f当前文本是:dfasty进行查找操作(f),查找文本as和qw:本套选:酚"你*-聚人文停表外£R1-本:「代表替换文本£代表查找文本s代表显示当前文本n代表窗堂墓第的人人入我要本套选:酚"你*-聚人文停表外£R1-本:「代表替换文本£代表查找文本s代表显示当前文本n代表窗堂墓第的人人入我要1S中青青青你进行显示操作(S):进行重置操作(n):重置操作和自己输入文本是同样的,在这里就不演示了,有爱好可以自己尝试。2、使用程序自身内置的文本(b):内置的文本是一行一列的文本a:唯表目且蒯△文本,b代表使用电脑设置的文本/输X彳尔的施第:当前文本是:哈鬣尸代表替换文本f代表查找文本$代表显示当前文本n代表其他操作和前面的操作时同样的,在这里就不一一演示了,有爱好的话可以自己尝试。七、实验运营情况分析(涉及算法、运营结果、运营环境等问题的讨论)。1、算法难点分析:该程序的难点不是算法有多难,而是它规定的功能比较多,会让人觉得比较难,而不乐意去做,其实我们只要把它规定的功能写成一个一个的函数,然后将这些函数封装在一个类里面就行了,在我们需要的时候就可以随时调用。2.该程序代码的缺陷:一是需要用户输入文本的行数和列数,并且每一行文本的字数要相同,灵活性较低,并且没有报错功能,用户输错后不会报错,不是很人性化,尚有就是界面不太美观,但是这些都可以改善,希望在以后的实验中做得更好。3、运营环境分析:改程序的实现环境是Dev-C++,有些函数库也许没有,比如说<algorithm.h>,但是这都不是大问题,没有的函数可以自己写。参考文献[1]唐宁九,游洪跃,朱宏,杨秋辉.数据结构与算法分析(C++版).清华大学出版社,2023.2和运营一个C++程序;4.上机调试程序,掌握查错、排错使程序能对的运营。三、实验的环境:指硬件和软件环境.硬件环境:G405+4G内存+320G硬盘+川大校园网.软件环环境:操作系统:Windows7编译系统的版本的特点:Dev—C++是一套用于开发C/C++的自由的集成开发环境(IDE),并以GPL作为散布许可。使用MinGW及GDB作为编译系统与除错系统。De\-C++的IDE是运用De1phi开发的o编辑软件特点:包含强大的类和内嵌WinAPI的MFC,具有可视化的编程界面。四、算法描述:1、用户可以选择自己输入文本或者直接使用程序以初始化的文本,用switchcase语句就可以根据用户不同的选择执行相应的代码。相应代码:cout«Ha代表自己输入文本,b代表使用电脑设立的文本〃Gend1;co〃请输入你的选择:〃VVendl;charch;switch(ch)〃对用户的不同选择执行不同的代码(case'a'://当用户选择自行输入文本时break;caseJbz://当用户选择使用电脑设立的文本时break;)2、当用户选择自己输入文本时,就需要写一些函数来存储这些信息,可以将这些函数封装在一个模板类中,只要定义一个之歌类的对象(bianji)就可以在需要的时候调用类的函数。在这个时候需要调用的函数有:bianji.Sethang(h);〃设立文本的行数bianji.Setlie(1);//设立文本的列数bianji.Setwenben();//输入文本bianji.Showwenben();〃显示文本3、单用户选择使用程序初始化的文本时,只要显示文本即可。这个时候需要的函数有:bianji.Showwenben();//显示文本4、该文本编辑器有插入,移除,替换,查找,显示和重置的功能,通过输出语句告知用户文本编辑器的功能,并询问用户要使用哪个功能。相应代码:charch=,s';〃初始化chwhi1e(ch!='q')〃当ch!='q'时,就不会退出循环(coutV<〃i代表插入文本〃;ocoutV〈〃R代表移除文本〃;ocout<<,zr代表替换文本”;代表查找文本〃;cOUt<<Z,S代表显示当前文本”;ocOUt<<°n代表重新建立一个文本〃;coutV<"q代表退出〃〈<end1;ocou〃请输入你的选择:〃;cin>>ch;)5、当用户选择插入(insert)功能时,就只需要将当前行数加1,将要插入的行及其后面的行的文本往后移一行,在输入要插入的行的文本即可,相应代码:while(h0>bianji.Gethang()||h0<1)〃假如要插入的行大于已有的〃最大行或者小于第一行就会规定重新输入一个(cout«〃输入错误,请重输:〃;ocin>>hO;}bianji.Sethang(bianji.Gethang()+1);〃当前行数加1inti,j;for(i=bianji.Gethang()T;i>=hO;i-)〃把要插入行及后面的行的〃文本往后一次移一行(for(j=0;j<bianji.Get1ie();j++)(^bianji.Xiugaiwenben(i,j,i-l,j);d)for(i=0;i<bianji.Getlie();i++)〃输入要插入的那一行的文本(ocou〃请输入第〃《hOV<”行第〃V<i+1<<〃个字符:〃;obianji.Fuzhiwenben(hO-1,i);cout<<end1;)bianji.Showwenben();〃显示文本6、当用户选择移除(remove)功能时,只需要将要移除的行的后面的文本依次往前移一行,就会顺便把要移除行的文本覆盖了,相称于达成了移除的效果,相应代码:while(h1>bianji.Gethang()||hl<l)//假如要移除的行大于己有的//最大行或者小于第一行就会规定重新输入一个ocout<V〃输入有误,请重输:〃;cin>>h1;)bianji.Sethang(bianji.Gethang()-1);//将当前行数减1inti1,jl;for(i1=hl-l;il<bianji.GethangO;il++)//把要移除的行的后面的〃行一次往前移一行就顺便把要移除的那一行给覆盖{〃了,从而达成移除的效果for(j1=0;jKbianji.Getlie();jl++)(obianji.Xiugaiwenbon(i1,j1,i1+1,jl);))bianji.Showwenben();7、当用户选择替换(replace)功能时,只需要重新输入要替换行的文本即可,其他行的文本不变,相应代码:for(i2=0;i2<bianji.Get1ie0;i2++)//得到要替换的那一行的列//数,然后输入新的文本(ecoutv〈〃请输入第〃0h2。〃行第〃<Vi2+l

温馨提示

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

评论

0/150

提交评论