注册 登录
编程论坛 C++教室

初学者求助,帮忙看下这个程序

sesedetian 发布于 2012-07-19 11:25, 776 次点击
这是c++primer上面的一道题。题目是:编写程序从标准输入读入一系列 string 对象,直到同一个单词连续出现两次,或者所有的单词都已读完,才结束读取。请使用 while 循环,每次循环读入一个单词。如果连续出现相同的单词,便以 break 语句结束循环,此时,请输出这个重复出现的单词;否则输出没有任何单词连续重复出现的信息。
#include<iostream>
#include <string>
using namespace std;
int main()
{
  cout<<"Enter some strings:(Ctrl+Z to end) "<<endl;
  string preWord,curWord;
  
  while(cin>>curWord)
      
  {
      if(curWord==preWord)
      
          break;
      
      else
          preWord=curWord;
      
    }
  if(curWord==preWord&&!curWord.empty())
      cout<<curWord<<" ocurrs two times."<<endl;
  else
      cout<<"No word ocurrs two times."<<endl;
  
  return 0;
 }
9 回复
#2
rjsp2012-07-19 12:06
帮忙看下这个程序
----- 看完了,你想问什么?吃饱了撑的
#3
hellovfp2012-07-19 12:09
#include<iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
    cout<<"Enter some strings:(Ctrl+Z to end) "<<endl;
    string curWord, same_word;
    vector<string> vs;
    vector<string>::iterator it;
    bool have_same_word = false;

    while( !have_same_word && cin >> curWord )
    {
        for(it = vs.begin(); it != vs.end(); ++it)
        {
            if(*it == curWord)
            {
                have_same_word = true;
                same_word = curWord;
                break;
            }
        }
        vs.push_back(curWord);

    }

    if(have_same_word)
        cout<< same_word <<" ocurrs two times." << endl;
    else
        cout<<"No word ocurrs two times." << endl;

    return 0;
}
#4
peach54602012-07-19 12:38
回复 2楼 rjsp
顶你
#5
sesedetian2012-07-19 14:13
我这样写,当没有单词重复时运行不出来,怎么回事?
#6
sesedetian2012-07-19 14:22
回复 3楼 hellovfp
我想问下我这样写当没有单词重复时,为什么执行不了?
#7
jiantiewen2012-07-21 22:41
在没有重复时,就还在循环输入。跳出了循环就只有一个结果。ctrl+z是终止了程序,所以不会有第二个结果。
#8
遗失的部落2012-07-22 08:08
顶楼上
#9
xunmi_19932012-07-22 15:48
7楼说得对。。。
#10
Wanggcong2012-07-22 23:32
9楼说得对。。.
1