c++primer 6.12,代码不知道哪出错了,求指教!

niuxiaobao 2014-02-22 03:29:07
寻找重复出现的单词并记录重复次数,最后输出重复次数最多的单词和次数
#include<iostream>
#include<string>
using namespace std;
int main()
{
string word,preword,repword;
int repnum=0,maxnum=1;
while(cin>>word){
if(word==preword)
++repnum; //重复单词计数
else{
if(repnum>maxnum){ //出现重复次数更多的单词
maxnum=repnum;
repword=preword;
}
repnum=1; //计数器置1
}
preword=word;
}
if(maxnum==1){
cout<<"no repeat"<<endl;
}
else
cout<<repword<<" repeat "<<maxnum<<endl;
return 0;
}

...全文
135 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
niuxiaobao 2014-02-22
  • 打赏
  • 举报
回复
引用 4 楼 hxingz 的回复:
[quote=引用 2 楼 niuxiaobao 的回复:] [quote=引用 1 楼 hxingz 的回复:] 按照你的程序逻辑,虽然判断了ww为3个,但是这段代码
if(repnum>maxnum){    //出现重复次数更多的单词
                maxnum=repnum;
                repword=preword;
            }
没有被执行,所以没有赋值,导致最后结果错误
为什么没有执行呢?当ww第三次出现的时候repnum为3,而此时的maxnum为2,应该执行啊[/quote] 因为你的word还等于preword,不会执行else,然后就直接退出循环了。[/quote]明白怎么改了,多谢了!
hxingz 2014-02-22
  • 打赏
  • 举报
回复
引用 2 楼 niuxiaobao 的回复:
[quote=引用 1 楼 hxingz 的回复:] 按照你的程序逻辑,虽然判断了ww为3个,但是这段代码
if(repnum>maxnum){    //出现重复次数更多的单词
                maxnum=repnum;
                repword=preword;
            }
没有被执行,所以没有赋值,导致最后结果错误
为什么没有执行呢?当ww第三次出现的时候repnum为3,而此时的maxnum为2,应该执行啊[/quote] 因为你的word还等于preword,不会执行else,然后就直接退出循环了。
  • 打赏
  • 举报
回复
感觉你的程序这样设计有问题,如果我输入 a b b c a a 你的程序判断不出了。 应该把输入的单词和次数都保存下来把,然后再最后比较次数。。
niuxiaobao 2014-02-22
  • 打赏
  • 举报
回复
引用 1 楼 hxingz 的回复:
按照你的程序逻辑,虽然判断了ww为3个,但是这段代码
if(repnum>maxnum){    //出现重复次数更多的单词
                maxnum=repnum;
                repword=preword;
            }
没有被执行,所以没有赋值,导致最后结果错误
为什么没有执行呢?当ww第三次出现的时候repnum为3,而此时的maxnum为2,应该执行啊
hxingz 2014-02-22
  • 打赏
  • 举报
回复
按照你的程序逻辑,虽然判断了ww为3个,但是这段代码
if(repnum>maxnum){    //出现重复次数更多的单词
                maxnum=repnum;
                repword=preword;
            }
没有被执行,所以没有赋值,导致最后结果错误

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧