设为首页 加入收藏

TOP

3.5.1 实例: 删除重复单词
2013-10-07 12:56:40 来源: 作者: 【 】 浏览:76
Tags:3.5.1 实例 删除 重复 单词

3.5.1 实例: 删除重复单词

当我们想将一个新的值放入一个对象, 就需要赋值操作。当你考虑赋值操作时, 很明显它在多次重复做一些事情时赋值是最有用的。当我们想以一个不同的值重复做某事时, 我们需要进行一次赋值。让我们来看一个小的程序, 它在一连串单词中找到相邻的重复字符。这段代码是大多数的语法检查程序的一部分:

 
由于它没有告诉我们重复单词在文本中的哪个位置出现, 因此这个程序对我们并不是很有帮助, 但是现在它够用了。我们从如下一行开始逐行分析这个程序:
 

这是一个字符串变量, 我们使用它来读取当前(即最近阅读)的单词:

 

这个结构称为一个while语句, 它对右侧的程序结构感兴趣, 我们将在4.4.2.1节中详细介绍。while的意思是当输入操作cin>>current成功的情况下, (cin>>current)后面的语句将反复执行, 而cin>>current成功的条件是从标准输入中读取字符。记住, 对于一个string, >>读取的是用空格分开的单词。你可以通过给程序一个终止输入符号(通常是指文件结尾)来终止这个循环。在Windows系统的计算机中, 使用Ctrl+Z(同时按Control和Z)紧接着一个回车。在UNIX或Linux系统的计算机中, 使用Ctrl+D(同时按Control和D)。

因此, 我们所做的是读取一个单词到current, 然后将它与前一个单词(存储在previous中)比较。如果它们是相同的, 我们将会:

 

然后, 我们准备好对下一个单词重复进行上述操作。我们通过将current单词拷贝到previous中来进行这个操作:

 

这可以处理我们开始后的所有情况。当第一个单词没有前一个单词可以比较时, 这段代码将会如何处理呢?这个问题可以在定义previous时得到解决:

 

""只包含一个字符(空格字符, 通过按键盘中的空格键来得到)。输入操作符>>会跳过空格, 我们不可能通过输入得到它。因此, 第一次执行while语句时, 检测

 

失败(正如我们所希望的)。

理解程序流程的一种方式是“推演计算机的运行”, 也就是按程序的顺序逐行执行指定的工作。在一张纸上画出很多方块, 然后在里面写入程序运行的结果。按程序指定的方式修改储存在其中的值。

试一试你亲自用一张纸来执行这个程序。输入是“The cat cat jumped”。即使是有经验的程序员, 当某段代码不那么清晰时, 也会用这种技术来推演其结果。

试一试运行“重复单词检测程序”。用句子“She she laughed He He He because what he did did not look very very good good”来测试它。这里有多少个重复的单词?为什么?在这里, 单词的定义是什么?重复单词的定义又是什么?(例如, “She she”是否重复?)


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇3.6.1 实例: 重复单词统计 下一篇3.8 类型和对象

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: