我正在学习c ++入门书,并练习5.14。练习是:
编写程序以从标准输入中读取字符串 寻找重复的单词。该程序应在输入中找到位置 一个单词紧随其后。跟踪最大的 单个重复发生的次数以及重复哪个单词。打印 最大重复次数,否则打印一条消息,说没有 这个词被重复了。例如,如果输入是 现在,棕色母牛现在的输出结果应该如何显示该单词出现了三次。
我的代码如下:
#include <iostream>
#include <string>
using std::string;
using std::cin;
using std::cout;
using std::endl;
int main()
{
string pre_word, word, max_repeate_word;
int repeate_times = 0; max_repeate_times = 0;
while (cin >> word) {
if (word == pre_word) {
++repeat_times;
}
else {
repeat_times = 1;
pre_word = word;
}
if (max_repeat_times < repeat_times) {
max_repeat_times = repeat_times;
max_repeat_word = pre_word;
}
}
if (max_repeat_times <= 1) {
cout << "no word was repeated" << endl;
}
else {
cout << "the word '" << max_repeat_word << "' occurred " << max_repeat_times << " times" << endl;
}
}
我的代码有什么问题吗?输入任何字符串时,程序均不显示任何输出。
答案 0 :(得分:-1)
while (cin >> word)
仅在EOF时停止,您需要添加停止条件。 示例:
while (cin >> word && word != "")