没有合适的资源?快使用搜索试试~ 我知道了~
文本文件单词的检索与计数
4星 · 超过85%的资源 需积分: 32 36 下载量 101 浏览量
2013-06-26
22:16:32
上传
评论 7
收藏 221KB DOC 举报
温馨提示
试读
12页
要求编程建立一个文本文件,每个单词不包含空格且不跨行,单词由字符序列构成且区分大小写;统计给定单词在文本文件中出现的总次数;检索输出某个单词出现在文本中的行号、在该行中出现的次数以及位置。 该设计要求可分为三个部分实现:其一,建立文本文件,文件名由用户用键盘输入;其二,给定单词的计数,输入一个不含空格的单词,统计输出该单词在文本中的出现次数;其三,检索给定单词,输入一个单词,检索并输出该单词所在的行号、该行中出现的次数以及在该行中的相应位置。 1.建立文本文件 2.给定单词的计数 3.检索单词出现在文本文件中的行号、次数及其位置 4.主控菜单程序的结构
资源推荐
资源详情
资源评论
程序设计课程设计
报 告
学 院:软件学院
专业班级:软件 班
学 号:
姓 名:
指导教师:
时 间: 2012 年 6 月 29 日
文本文件单词的检索与计数
专业:软件工程班级:
班 姓名:李超 学号:完成日期:
1.1【问题描述】
串是非数值处理中的主要对象,如在信息检索、文本编辑、符号处理等许多领域,得
到越来越广泛的应用。在高级语言中也引入了串数据类型概念,并且串变量与其他变量
(如整型、实型等)一样,可以进行各种运算。
然而,在各种不同类型的应用中,所处理的串有不同的特点,要想有效地实现串的处
理,就必须熟悉串的存储结构及其基本运算。本课程设计的目的就是熟悉串类型的实现方
法和文本模式匹配方法,熟悉如何利用模式匹配算法实现一般的文本处理技术。
本课程设计分两步:首先,设计出串定位算法(即模式匹配算法)及其实现;然后,
再利用串定位算法设计文本文件的检索及单词的计数等操作。
1.2【设计需求及分析】
1.2.1 串模式匹配算法的设计要求
在串的基本操作中,在主串中查找模式串的模式匹配算法——即求子串位置的函数
,是文本处理中最常用、最重要的操作之一。
所谓子串的定位就是求子串在主串中首次出现的位置,又称为模式匹配或串匹配。模
式匹配的算法很多,在这里只要求用最简单的朴素模式匹配算法。该算法的基本思路是将
给定子串与主串从第一个字符开始比较,找到首次与子串完全匹配的子串为止,并记住该
位置。但为了实现统计子串出现的个数,不仅需要从主串的第一个字符位置开始比较,而
且需要从主串的任一给定位置检索匹配字符串,所以,首先要给出两个算法:
.标准的朴素模式匹配算法
.给定位置的匹配算法
1.2.2 文本文件单词的检索与计数的设计要求
要求编程建立一个文本文件,每个单词不包含空格且不跨行,单词由字符序列构成且
区分大小写;统计给定单词在文本文件中出现的总次数;检索输出某个单词出现在文本中
的行号、在该行中出现的次数以及位置。
该设计要求可分为三个部分实现:其一,建立文本文件,文件名由用户用键盘输入;
其二,给定单词的计数,输入一个不含空格的单词,统计输出该单词在文本中的出现次数
其三,检索给定单词,输入一个单词,检索并输出该单词所在的行号、该行中出现的次数
以及在该行中的相应位置。
1.建立文本文件
2.给定单词的计数
3.检索单词出现在文本文件中的行号、次数及其位置
4.主控菜单程序的结构
3【设计功能的实现】(用 C 或 C++语言描述)
详细设计
朴素模式匹配算法
该算法的基本思想是:设有三个指针——,用 指示主串 每次开始比较的位置;
指针 分别指示主串 和模式串 中当前正在等待比较的字符位置;一开始从主串 的第
一个字符()和模式 的第一个字符()比较,若相等,则继续逐个比较后续字
符()。否则从主串的下一个字符( )起再重新和模式串()的字符开始比
较。依此类推,直到模式 中的所有字符都比较完,而且一直相等,则称匹配成功,并返
回位置 ;否则返回,表示匹配失败。
顺序串的模式匹配算法如下:
求子串 在主串 中首次出现的位置
!"模式串长度赋
!"目标串长度赋
#$%
目标串起始位置 送入
&"!%''( )"*+ )"*+
,继续下一个字符的比较
#若相等,则说明找到匹配的子串,返回匹配位置 ,
否则从下一个位置重新开始比较
-
,#$
-
,
给定位置的串匹配算法
该算法要求从串 (为顺序存储结构)中第 个字符起,求出首次与字符串 相同的
子串的起始位置。
该算法与上面介绍的模式匹配算法类似,只不过上述算法的要求是从主串的第一个字
符开始,该算法是上述算法的另一种思路:从第 个元素开始扫描 ,当其元素值与 的
第一个元素的值相同时,判定它们之后的元素值是否依次相同,直到 结束为止。若都相
同,则返回当前位置值;否则继续上述过程,直至 扫描完为止,其实现算法如下:
./.$(0$
扫描 ( 的下标,因为 ) 中数组下标是从 开始,串中序号相差
扫描 ( 的开始下标
&"!%( !"''%( !"
#( )"*+( )"*+
继续使下标移向下一个字符位置,
!(
使 下标回溯到原位置的下一个位置,使 指向 ( 的第一个字符,再重新比
较,
剩余11页未读,继续阅读
资源评论
- Vu1c4n2014-06-29不错的资源,谢谢分享。
- 少年汪2014-07-08不错的资源,就是形式上一般
太白1008
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功