2015-01-21 4 views
0

필자가 작성한 validatePlay 함수는 재생 유형과 일치하는 입력 된 문자를 허용해야합니다.Cout과 cin은 C++의 함수 내에서 반복됩니까?

char validatePlay(); 

void getHandPlayed(char); 


int main() 
{ 

    char play= validatePlay(); 

    validatePlay(); 

    getHandPlayed(play); 

    system("pause"); 
} 

char validatePlay() 
{ 
    char play; 
    cout << "enter play (R)ock, (P)aper or (S)cissor "; 
    cin >> play; 
    while (cin.fail() || play != 'R' && play != 'P' && play != 'S') 
    { 
     cin.clear(); 
     cin.ignore(80, '\n'); 
     cout << "re-enter play (R)ock, (P)aper or (S)cissor "; 
     cin >> play; 
    } 
    return play; 

} 

void getHandPlayed(char play) 
{ 

    switch(play) 
    { 
     case 'R': 
      cout << "Rock"<<endl; 
      break; 
     case 'P': 
      cout << "Paper"<<endl; 
      break; 
     case 'S': 
      cout << "Scissors"<<endl; 
      break; 

    } 
} 

그것은 일종의 작동하지만 몇 가지 이유는 cout을 두 번 상관없이 내가 입력 한 내용 나타나지 CIN하지만 그것은 단지 내가 처음 입력 문자에 복용. 그것은 이렇게 보입니다.

는 (R) 옥토퍼스 (P) 조리개 또는 (S) cissor의 R

위 재생 입력 (R) 옥토퍼스 (P) 조리개 또는 (S) cissor의 S 재생 입력

계속하려면 아무 키나 누르십시오. . .

내가 여기서 잘못하고있는 것을 알아낼 수 없습니다.

+0

validatePlay를 두 번 호출합니다. 두 번째로 읽은 값 즉 읽은 값을 무시합니다. – bolov

답변

2

validatePlay()를 두 번 호출합니다.

처음

은 여기에서 :

char play= validatePlay(); 

두번째는 여기 :에만 저장하고 제 호출의 결과를 사용

validatePlay(); 

.

0

주에 당신이 있습니다

char play= validatePlay(); 

validatePlay(); 

당신은 그 수행에 대해 어떻게 생각하십니까?