ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:61.98KB ,
资源ID:26188298      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26188298.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(文本编辑器c++实验报告附源代码.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

文本编辑器c++实验报告附源代码.docx

1、文本编辑器c+实验报告附源代码四 川 大 学 软 件 学 院实 验 报 告课程名称 数据结构 实验课时8实验项目文本编辑器实验时间12到14周实验目的 了解c+类的封装 和KMP算法。实验环境 Windows平台 VC6.0+ 实验内容(算法、程序、步骤和方法) 部分函数创建思想:创建过程如下:a、 定义LinkList指针变量*temp: LinkList *temp;b、 定义文本输入变量ch,记录文本行数变量j,记录每行字符数变量i;c、 申请动态存储空间:head-next=(LinkList *)malloc(sizeof(LinkList);d、 首行头指针的前驱指针为空:head

2、-pre=NULL; 首行指针: temp=head-next; 首行指针的前驱指针也为空: temp-pre=NULL; 定义没输入字符时文章长度为0: temp-length=0; 初始化为字符串结束标志,防止出现乱码: for(i=0;idatai=0;e、 利用循环进行文本输入for(j=0;jLINK_INIT_SIZE;j+)/ 控制一页 for(i=0;idatai=ch; /给temp指向的行赋值 temp-length+;/行中字符长度加1 if(ch=#) NUM=j; break; /文章结束时,Num来记录整个文章的行数 在字符输入的过程中,如果在单行输入的字符超过了8

3、0个字符,则需要以下操作 :输入字符数大于80,重新分配空间建立下一行temp-next=(LinkList *)malloc(sizeof(LinkList) ;给temp的前驱指针赋值:temp-next-pre=temp;temp指向当前行: temp=temp-next;将下一行初始化为字符串结束标志,防止出现乱码:for(i=0;idatai=0;记录整个文章的行数:temp-row=NUM+1;返回指向最后一行指针:return temp;文本输入部分到此结束。实验流程图:程序清单Header file#include#includeusing namespace std;int*

4、 get_next(char* T, int* next);/声明get_next函数以获取next数组。int KMP(char *S, char *T);/声明KMP函数调用next函数来进行查找。int get_choice();/选择要执行的功能。void serach(string S);/定义查找函数,用于进行字符串查找。void add_char(string &S);/定义添加函数,用于进行字符串添加。void change(string &S);/定义替换函数,将修改指定位置上的字符为新指定的字符。void delete_char(string &S);/定义删除函数,将用于

5、删除指定位置上的字符。void display(string &S);/显示函数,用于显示当前的字符串。 C+soure file#includetextedit.husing namespace std;int* get_next(const char* T, int* next) /根据T字符串将所得到的next数组值存在next指针指向的数组中 int i = 0, j = -1; int length = strlen(T); int *temp = next; *next = -1; while(i length) if(j=-1 | *(T+i)=*(T+j) /如果字符串中第i个

6、字符与从头起第j个相同,则i,j分别向后移一位 i+; j+; if(*(T+i)!=*(T+j) /当遇到第一个不相等的字符时,当前的j值就是next数组第i个元素的值 *(next+i)=j; else *(next+i)=*(next+j); /如果相等,则从字符串开始第j个元素的next值与当前位置的值相同 else j=*(next+j); /如果遇到第i个元素和从头起第j个元素不相同,则从第j个元素的next值的位置开始比较,即回溯 return temp;int KMP(string S, string T) int S_Length = S.length(); int T_Le

7、ngth = T.length(); if( S_Length T_Length) /如果目标串比要查找的串要短,直接返回失败 return 0; int i = 0, j = 0; int* next = new intT_Length; get_next(T.c_str(), next); while(i S_Length & j =T_Length) /实际上当j=T_Length时,即意味着查找成功,返回开始字符所在的位置,否则返回失败 return i-T_Length+1; return 0;int get_choice() /获取用户输入的选项,以进行相应操作。 int temp

8、; couttemp; if(temp0) /只有输入1、2、3、4、5、6时候才会返回输入的选项。 return temp; else cout你的输入有误,请重新输入n你的选择:; void serach(string S) int k; string T; cout请输入要查找的串:; cin.sync(); /清空缓存区,否则将自动读入输入选项时候按下的回车键。 getline(cin,T); if(k=KMP(S,T) /KMP的返回值不为0即查找成功时候,if条件判断认为是真。 cout所要查找的字符串从第k个字符开始。endl; else cout查找失败endl;void ad

9、d_char(string &S) int k; string m; coutk; if(k=0&k=S.length() /插入的位置不能在字符串外面。 break; else cout你输入的位置有误。请重新输入你想插入的位置:; cout请输入你要插入的字符串:; cin.sync(); /同前 getline(cin,m); S=S.insert(k,m); /将字符串m插到S的第k个位置上。void change(string &S) /调用String类中将第k个字符到第m个字符替换为新字符串的函数。 int k,m; string temp; coutk; if(k=0) /起始

10、位置必须小于长度且不能等于 coutm; if(mk) /结尾位置必须不能大于字符串长度,并且不能小于起始位置。 break; else cout输入有误,请重新输入结尾:; break; else cout输入有误,请重新输入开头:; cout请输入要替换成的字符串:; cin.sync(); getline(cin,temp); S.replace(k,m,temp); /将目标串替换至指定位置。void delete_char(string &S) int k,m; coutk; if(k=0) /若k=S.length(),则下面无法删除0个。 coutm; if(k+m)0) /同前

11、,删除的最后一个字符的位置不能超出字符串的长度。 break; else cout输入有误,请重新输入个数:; break; else cout输入有误,请重新输入开始位置:; S=S.erase(k,m);void display(string &S) cout当前的字符串为:endl; coutS.data()endl;void main() int choice; string S; cout请输入一个字符串:endl; getline(cin,S); while(true) choice = get_choice(); switch(choice) case 1:serach(S);b

12、reak; case 2:add_char(S);break; case 3:change(S);break; case 4:delete_char(S);break; case 5:display(S);break; default: exit(0); 实验内容(算法、程序、步骤和方法)数据记录和计算 结 论(结 果) 基本达到了实验的要求。可以实现字符串的添加,查找,删除,现实,。而且可以对txt文件进行编辑。工作正常。可以正常的打开txt文件进行编辑,可以对文件进行保存小 结 自己在整个课程设计过程中还是比较轻松的,编写过程中遇到的困难及问题都通过查阅资料、向老师提问得以解决。所以本次课程设计自己最大的体会就是不管写什么程序,自己首先得对这个问题要分析透彻,要知道自己要干什么,然后才能让自己干什么。 指导老师评 议 成绩评定: 指导教师签名:忽略此处.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1