单词查询系统 [文档在线提供].docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单词查询系统 [文档在线提供].doc

1 命题: 一个文本文件仅含有英文字母和分隔符,分隔符包括空格、逗号、句号和换行符。除此之外,该文件不含其它符号。一个单词的由一个或多个分隔符分隔的连续字母序列,例如:下面一个包含5个单词的文件 符号“_”为空格符;“↓”为换行符;“.”为句号。文本文件中的第一个名子是从文件头到第一个句号间的字符序列(含句号),除第一个句子之外的所有句子都是由两个句号间的所有字符组成的序列(含后面的句号)。编一程序由键盘输入一个符合上述约定的文本文件名和一个单词,计算该单词在该文件中出现的次数,并输出包含该单词的所有句子(按句子在文件中的先后次序,依次输出)。 注意: 文件中每个单词的长度不超过20个字母。 判断单词是否相同时不区分大小写。例如ABC、Abc、Abc、aBC、abc…都是同一个单词。 输入数据: 由键盘输入待查文本文件名和待查单词。待查文件名为:input.txt。 输出数据: 输出文件为output.txt,该文件第一行为该单词在文件中出现的次数。 从每行开始是依先后次序输出的包含该单词的句子。 在输出句子时主注意: 每个句子无论多长只占一行; 原句中每一个换行符用一个空格符代替。 输入输出范例:查阅have单词 输入文件内容: 输出文件内容: 2 分析: 依据命题所给,现在来进行逐个信息的分析。 第一、文件仅含有英文文字的分隔符空格、逗号、句号和换行符,除些之外再不含其它文字。所以,在程序中所要考虑的情况,也就这几种。 第二、一个单词的由一个或多个分隔符分隔的连续字母序列,这里表明,只有遇到形如“(分隔符)字符串(分隔符)”位于两个分隔符之间的情况才算找到一个单词。 第三、文本文件中的第一个名子是从文件头到第一个句号间的字符序列(含句号),除第一个句子之外的所有句子都是由两个句号间的所有字符组成的序列(含后面的句号)。辨别所读入的字符序列是否已经是一个句子可用句号来分别。从这里以及后面的“每个句子无论多长只占一行;”我们知道,对于文本的处理,应以句子为单位,至少是在存放时应以句子为单位,以便空易实现文本的输出格式。 考虑到句子的长度的变化,对于每个句子在内存中的存放形式,应该是采用数组较好些。因为采用链表的话,对每个字母进行存放,还要加一个存放指向下一个字母的指针的空间,这样的在存放了1/2的句子就已经用掉了能存放的下整个句子的空间。 如果用每个单词作为一个链表结点,这样对于存放要好一些。但是,这样一来就对于比较和输出时有所不利。 第四、判断单词是否相同时不区分大小写。例如ABC、Abc、Abc、aBC、abc…都是同一个单词。这里要在单词识别时,需要进行大小写转换。 第五、在输出数据的要求中,可得到,在进行单词查找的过程中,要对所找到的单词次数进行记录。如果遇到换行符,这是指在一个句子尚未查找完成时遇到换行符,这个时候要用空格来代替。但输出结果应是没有类似于在单词间有多个空格的形式的。 通过分析,现在初步想到二种实现方法:读进后再处理,边读边处理。对于这二种情况,需要对其的执行效率和空间的占用进行考虑。现在来分析一下这二种方法的时空情况。假设硬磁盘的读写速度为Vh(B/ms),起动一次要开销为Th(ms),内存速度为Vm(B/ms),CPU处理一个字符所花的时间为Tc(ms)。而总共要处理的字符个数为N,其中为M句,含有所找单词的句子是K句。 2.1读进后再处理 该方法是一次性的把整个要处理的文件全部读到内存中。这样在读完之后不用再次对其进行读取。对于硬磁盘只需起动一次。根据计算机的存储器的实际情况,显然,这样会有一个较快的处理速度。 时间: 从硬磁盘读入要花时间 = N/Vh+Th; 这时写入内存的时间由于比起从硬磁盘读取的时间少的多,且在读硬磁盘的同时,可对其进行写。于是可忽略不计。 CPU处理过程中花费时间 = Tc*N 输出所花费的时间 = 1/Vh * ∑K + Th 注:∑K表示K句中总共的字符数。 所以: 时间开销 = 从硬磁盘读入要花时间 + 处理过程中花费时间 + 输出所花费的时间 = N/Vh + Th + Tc*N + 1/Vh*∑K + Th = N/Vh + 2*Th + Tc*N + 1/Vh * ∑K = 2*Th + Tc*N + (N * ∑K)/Vh 空间: 而对于空间的使用上,一次性全读入,需要把整个文件全部读到内存,这样对于一些没有包含所要找的单词的句子,也都预先读到内存。也就是说,如果,在文件中包含有所要找的单词越少,则空间浪费越多。 读完之后在内存中占用空间最经济的是:N 但使用固定大小的数组存放,则是:数组长度 * M;(数组长度为500B) 则空间应是:500 * M 注:假设句子最长为500字符。 如果是在找到每个

文档评论(0)

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档