- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
建立文本的检索与计数
1 引 言
本程序主要实现文本文件单词的检索与计数,正文包括:对文本文件单词的检索与计数程序的详细要求,对程序的分析,勾画程序思路及内容的流程图,程序代码,程序运行相关的截图,以及我们在本次程序中的详细分工和收获。
1.1 课程设计目的
在本程序设计中,主要通过给定位置的串匹配算法,实现文本文件单词的查找,计数和记录单词的位置和行号。在C程序设计中我们对于算法的具体实现过程有一个深刻的理解,除了算法本身外,须借助一些辅助数据结构,在本程序中借用字符串对数据进行存储和输出操作。通过循环比较的方法,查找出单词的个数和位置。同时培养自己的算法设计和算法分析能力,提高综合运用所学的理论知识和方法独立分析和解决问题的能力。训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的工作方法、作风和相互合作的精神。
1.2 课程设计内容及要求
要求编程建立一个文本文件,每个单词不包含空格且不跨行,单词由字符序列构成且区分大小写;统计给定单词在文本文件中出现的总次数;检索输出某个单词出现在文本中的行号、在该行中出现的次数以及位置。该设计要求可分为三个部分实现:其一,建立文本文件,文件名由用户用键盘输入;其二,给定单词的计数,输入一个不含空格的单词,统计输出该单词在文本中的出现次数;其三,检索给定单词,输入一个单词,检索并输出该单词所在的行号、该行中出现的次数以及在该行中的相应位置。
(1)建立文本文件。
(2)给定单词的计数。
(3)检索单词出现在文本文件中的行号、次数及其位置。
(4)主控菜单程序的结构。
① 头文件包含。
② 菜单选项包含:建立文件、单词定位、单词计数、退出程序。
③ 选择1-4执行相应的操作,其他字符为非法。
2 设计思路与方案
2.1 课程设计思路
课程设计要求是实现文本文件单词的检索与计数
进行单词计数和检索的程序设计时,首先用结构体定义字符串,然后再考虑通过母串代表文件文本,用子串代表单词,然后通过母串和子串的循环比较,确定母串是否存在子串,子串出现的次数以及位置。用j表示子串开始比较的位置,用i表示比较过程子串中字母的位置,通过j和i的累加,循环比较字符是否相等。最后通过j与子串长度的大小关系,判断母串中是否存在子串以及存在的位置和次数。
对于文本单词的检索与计数的程序设计,分为两部分。第一部分是通过调用fget将文本写入字符串数组,然后调用串匹配函数,查找显示单词在文本中出现的次数;第二部分是通过fget将文本写入字符串数组然后调用串匹配函数,查找显示单词在文本中出现的次数然后根据sub数组输入单词出现的位置。
2.2 程序所用的功能函数
程序设计当中涉及到的功能函数较多,具体如下表2-1所示:
表2-1 功能函数列表
函数名 功能描述 void CreateTextFile() 建立文本文件函数 void SubStrCount() 文本文件单词计数函数 void SubStrInd() 检索单词出现在文本文件中的行号、位置及出现的次数 Int PartPosition() 给定位置的串匹配
2.3 课程设计流程图
主函数设计流程如图2.1:
图2.1 程序流程图
串匹配设计流程如图2.2:
图2.2程序流程图
3 详细实现
3.1 数据结构体设计
定义结构体
typedef struct
{
char Ss[MaxStrSize]; //Ss是一个可容纳1024个字符的字符数组
int length;
} SeqString; //定义顺序串类型
3.2 功能函数实现
(1)给定位置的串匹配:int PartPosition(SeqString S,SeqString T,int k)
将T字符数组中的从0开始与S字符数组的字符逐一比较。
当j大于等于T.length时表示S字符数组中存在T字符数组,返回T字符数组开始的位置。
否则说明S字符数组中没有T字符数组。
(2)建立文本文件函数:void CreateTextFile()
用C语言I/O流输入名字建立一个文件。
(3)文本文件单词计数函数:void SubStrCount()
将文件字符串写入一个数组。调用给定为位置的串匹配,查找记录单词个数。
(4)检索单词出现在文本文件中的行号、位置及在该行中出现的次数:
void SubStrInd()
将文件字符串写入一个数组。调用给定为位置的串匹配,记录单词个数,出现的位置。
3.3 函
您可能关注的文档
最近下载
- 计算机视觉 第7章 摄像机成像模型.ppt VIP
- 2025年部编版新教材语文二年级上册第三单元教案设计.docx
- 宠物医院一例猫血栓诊治方案.pdf VIP
- 史铁生的课件.pptx VIP
- 2024-2025学年广东省深圳市南山育才集团九年级(上)期中语文试卷.doc VIP
- 北师大版七年级下册 第2章平行线 ---纸片翻折问题 专题练习(word版、含解析).docx VIP
- 2025-2026学年八年级数学上学期第一次月考01(江西专用,人教版2024八年级上册第十三章_第十四章)【含答案】.docx
- 介绍信 接洽函.docx VIP
- 2025年-2025秋形势与政策课件携手周边国家共创美好未来.pdf
- 第05讲 平行线中的翻折问题解题技巧(含解析)-2021-2022学年七年级数学下册常考点.pdf VIP
文档评论(0)