2010-07-18 3 views
2

지도를 사용하여 단어의 출현을 계산합니다. 여기에 코드가 있습니다.입력 단자 문제 및지도

#include <iostream> 
#include <map> 
#include <string> 
using namespace std; 
int main() { 
    map<string,int>wordcount; 
    string s; 

    while (cin>> s && s!="red") 
     ++wordcount[s]; 

    while (cin>>s && s!="red") 

    cout << s << " " << wordcount[s] << endl; 
    return 0; 
} 

프로그램을 시작하고 단어를 입력하면 마지막 줄에 "red"라는 단어를 입력하지만 아무 것도하지 않습니다. 그럼 난 "빨간색"두 번째 입력이 출력 :

아무 키나 눌러

무엇이 잘못을 계속?

+0

동일한 루프 테스트를 두 번 정확하게 사용하는 이유는 무엇입니까? 이것은 두 번째 루프가 실행될 수 없음을 의미합니다. –

+0

@Marcelo : s! = "red"가 계산되기 전에 "s"가 새 값을 가져 오므로 두 번째 루프가 실행됩니다. –

+0

@Mattias : 너 거기있어! 논리를 작성하는 것이 다소 모호한 방법이라고 제안 할 수 있습니까? 이것은 미리 지정된 입력 형식으로 당신에게 강제되어 있습니까? 입력 파일에서 어떤 키를 인쇄할지 (어떤 순서로), 아니면 모든 키를 인쇄하는 불필요한 방법인지 결정하기를 원하십니까? –

답변

0

여기에 글씨를 쓰려면 너무 비틀 거리지만, 두 번째 시도해 보겠습니다. :)

많은 단어를 쓰는 경우 "red"라고 쓸 때까지 계산됩니다. 두 번째 루프는 입력 한 단어의 수를 인쇄하지만 "red"를 바로 입력하면 아무 것도 인쇄하지 않고 프로그램을 종료합니다. 다음과 같은 입력으로 프로그램을 실행

보십시오 : 당신은, 단어의 목록을받을지도로 발생 각 단어의 수를 작성하고 인쇄 할 것을 이해

one 
two 
two 
red 
zero 
one 
two 
red 
+0

스트림을 bool로 변환 할 수 있습니다. – kennytm

+0

바로 당신이 케니입니다. 업데이트 중 ... –

1

아무런 문제가 없습니다. Visual Studio는 자동으로 PAUSE 프로그램이 끝나기 전에 "디버깅하지 않고 실행"할 때 콘솔 창이 닫히지 않도록합니다.

1

.

두 번째 while 루프 대신을 만든지도에서 을 반복하여 각 단어의 수를 인쇄해야합니다.

here지도의 내용을 인쇄하는 방법을 알 수 있습니다.