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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构实验报告文本字符计数器Word格式.docx

1、 读入一文本行至串变量; 串变量写入文件; 输入是否结束输入标志; 关闭文件 给定单词的计数 该功能需要用到前一节中设计的模式匹配算法,逐行扫描文本文件。匹配一个,计数 器加1,直到整个文件扫描结束;然后输出单词的次数。 检索单词出现在文本文件中的行号、次数及其位置 主控菜单程序的结构 头文件包含 菜单选择包括: a、 建立文件 b、 单词计数 c、 单词定位 d、 退出程序 选择14执行相应的操作,其他字符为非法3. 模块划分4. 概要设计:(流程图)建立文本文件 定义一个串变量 ,定义文本文件, 输入文件名,打开该文件 , 循环读入文本行,写入文本文件, 关闭文件 。 ( 建立文本文件的思

2、路过程)给定单词的计数逐行扫描文本文件。匹配一个,计数器加1,直到整个文件扫描结束;然后输出单词的次(给定单词计数的过程)检索单词出现在文本文件中的行号、次数及其位置扫描一个单词,单词数加1,匹配一个,计数器加1,输出该单词数,行数到底。以此,行数加1,单词数清零,直到整个文件扫描结束;然后输出单词的次数,行号,第几个单词。(检索单词的出现在文本文件中的行号,次数以及位置)5.主要函数(算法)说明朴素模式匹配算法该算法的基本思想是:设有三个指针i,j,k,用i指示主串S每次开始比较的位置;指针j,k分别指示主串S和模式串T中当前正在等待比较的字符位置;一开始从主串S的第一个字符(i=0;j=1

3、)和模式T的第一个字符(k=0)比较,若相等,则继续逐个比较后续字符(j+,k+)。否则从主串的下一个字符(i+)起再重新和模式串(j=0)的字符开始比较。依此类推,直到模式T中的所有字符都比较完,而且一直相等,则称匹配成功,并返回位置i;否则返回-1,表示匹配失败。顺序串的模式匹配算法如下:int index(SString S, SString T) /求子串T在主串S中首次出现的位置int i,j,k,m,n;m=T.length; /模式串长度赋mn=S.length; /目标串长度赋nfor (i=0; i=n-m; i+) j=0; k=i; / 目标串起始位置i送入k while

4、 (j=m & s.chk=t.chj) k+; j+; /继续下一个字符的比较 if (j=m) /若相等,则说明找到匹配的子串,返回匹配位置i,/否则从下一个位置重新开始比较 return i; /endforreturn -1; /endIndex给定位置的串匹配算法该算法要求从串S1(为顺序存储结构)中第k个字符起,求出首次与字符串S2相同的子串的起始位置。该算法与上面介绍的模式匹配算法类似,只不过上述算法的要求是从主串的第一个字符开始,该算法是上述算法的另一种思路:从第k个元素开始扫描S1,当其元素值与S2的第一个元素的值相同时,判定它们之后的元素值是否依次相同,直到S2结束为止。若

5、都相同,则返回当前位置值;否则继续上述过程,直至S1扫描完为止,其实现算法如下:Int PartPosition(SString S1, SString S2, int k)int i, j;i=k-1; /扫描s1的下标,因为c中数组下标是从0开始,串中序号相差1j=0; /扫描s2的开始下标while (is1.length & j=s2.length) return i- s2.length; /表示s1中存在s2,返回其起始位置 return -1; /表示s1中不存在s2, 返回-1 /函数结束说明:以上两个算法可统一为一个算法,即在子串定位算法Index(S,T)的参数中增加一个起

6、始位置参数即可。建立文件的实现思路是:(1)定义一个串变量;(2)定义文本文件;(3)输入文件名,打开该文件;(4)循环读入文本行,写入文本文件,其过程如下: While (不是文件输入结束) 读入一文本行至串变量;串变量写入文件;输入是否结束输入标志;(5)关闭文件。该功能需要用到前一节中设计的模式匹配算法,逐行扫描文本文件。然后输出单词出现的次数。其实现过程如下:(1)输入要检索的文本文件名,打开相应的文件;(2)输入要检索统计的单词;(3)循环读文本文件,读入一行,将其送入定义好的串中,并求该串的实际长度,调用串匹配函数进行计数。具体描述如下:While (不是文件结束) 读入一行并到串

7、中; 求出串长度; 模式匹配函数计数;(4)关闭文件,输出统计结果。这个设计要求与上一个类似,但要相对复杂一些。其实现过程描述如下:(3)行计数器置初值0;(4)while (不是文件结束) 读入一行到指定串中; 行单词计数器置0; 调用模式匹配函数匹配单词定位、该行匹配单词计数; 行号计数器加1; If (行单词计数器!=0) 输出行号、该行有匹配单词的个数以及相应的位置;运行主控程序主控菜单程序的结构要求内容如下:(1)头文件包含;(2)菜单选项包括: 1建立文件 2单词计数 3单词定位 4退出程序(3)选择14执行相应的操作,其他字符为非法。6.详细设计(源代码):#includestr

8、ing.hiostream.h#define MaxStrSize 256 /根据用户需要自己定义大小typedef struct char chMaxStrSize; /ch是一个可容纳256个字符的字符数组 int length; SString;/定义顺序串类型int PartPosition (SString s1,SString s2,int k) int i,j; i=k-1;/扫描s2的开始下标 while(i return i-s2.length;/表示s1中不存在s2,返回-1 /函数结束 void CreatTextFile() SString S; char fname1

9、0,yn; FILE *fp; printf(输入要建立的文件名:); scanf(%s,fname); fp=fopen(fname,w yn=n;/输入结束标志初值 while(yn=|yn=N)请输入一行文本:gets(S.ch); S.length=strlen(S.ch); fwrite(&S,S.length,1,fp); fprintf(fp,%c,10);/是输入换行结束输入吗?y or n :yn=getchar(); fclose(fp);/关闭文件建立文件结束! void SubStrCount() SString S,T;/定义两个串变量 char fname10; i

10、nt i=0,j,k;输入文本文件名:r输入要统计计数的单词:,T.ch); T.length=strlen(T.ch); while(!feof(fp) /扫描整个文本文件 / fread(&S.ch,1,sizeof(S),fp);/读入一行文本 memset(S.ch,0,256); fgets(S.ch,100,fp); k=0; /初始化开始检索位置 while(kS.length-1) /检索整个主串S j=PartPosition(S,T,k);/调用串匹配函数 if(j0)行号:%d,次数:%d,位置分别为:,l,i); for(m=1;m=i;m+) printf(%4d,w

11、zm+1);n /检索单词出现在文本文件中的行号、次数及其位置 int main() void CreatTextFile(),SubStrCount(),SubStrInd(); int xz; do * * * * * * * * * * * * * * made in 李媛媛 * * n printf(* * * * * * * * * * * * * * * * * * * * * * * * *n*文本文件单词的检索与计数 *n* 1. 建立文本文件 *n* 2. 单词字串的计数 *n* 3. 单词字串的定位 *n* 4. 退出整个程序 *n* * * * * * * * * * *

12、 * * * * * * * * * * * * * n 请选择(1-4) n%d,&xz); switch(xz) case 1 : CreatTextFile();break; case 2 : SubStrCount(); case 3 : SubStrInd(); case 4 : return 0; default:printf(选择错误,重新选 n while(1);7.调试分析: Ps:功能1,建立文本文件功能2,单词字串的计数功能3,单词字串的检索功能4,退出整个程序8.课程设计总结:“千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义。刚拿到任务书的时候

13、脑子里一片茫然,不知道如何下手,但经过两周的努力,终于完成了。其实无论做什么事情,只要用心就一定会有收获,绝不能轻言放弃。以前用编程,只是注重如何编写函数能够完成所需要的功能,似乎没有明确的战术,只是凭单纯的意识和简单的语句来堆砌出一段程序。现在编程感觉完全不同了。在编写一个程序之前,先对这个课程设计进行了一下分析,将每个要求都花了一下算法流程图,使得自己的思路更加的清晰了。然后进行编程,不断的在电脑上调试程序,终于完成了此次的课程设计。另外,这次的课程设计让我深刻理解数据结构了的重要性。只有真正理解这样定义数据类型的好处,才能用好这样一种数据结构,了解典型数据结构的性质是非常有用的,它往往是

14、编写程序的关键。过而能改,善莫大焉。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获龋最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中虽然遇到了很多问题,但是在老师同学的帮助下和自己在不断地查阅书籍资料,终于使困难得以迎刃而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!通过这次课程设计,逐渐提高了我

15、的程序设计和调试能力,我以前对算法一直很害怕,总是看不明白究竟这程序中间的过程是怎么进行的。在这次实验中我终于克服了这一障碍,一遍遍在心中自己默默的走,终于弄明白了,另外,从此次课程设计,我学到了很多课内学不到的东西,比如独立思考解决问题,出现差错的随机应变,与人合作共同提高,这些都让我受益非浅,今后的制作应该更轻松,自己也都能扛的起并高质量的完成项目。功夫不负有心人!不过这次试验也让我看到了自己的不足,在程序设计过程中我还有关于C语言的一些比较具体的东西还不太懂,需要进一步了解。毕竟学如逆水行舟,不进则退,只有不断充实自己才会不断进步。这次试验还让我意识到只有不断的在电脑上调试程序,自己的水平才能得到提高,纸上谈兵终觉浅最后,我要感谢在我课设过程中不断帮助我并给我鼓励的同学和老师们,是你们的帮助 让我让更自信并不断努力,我一定会更加努力学习并不断充实自己

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

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