2012-02-09 1 views
1

나는 1d 배열의 정답을 가지고 있지만, 그들은 txt 파일에 대문자로 저장되어있다. 나는 사용자 입력을 받아들이 길 원한다. 그러나 그가 소문자로 대답한다면 나는 프로그램이 그의 대답을 대문자 또는 대문자로 받아들이 길 원한다. 나는 올바른 길을 가고 있는가? 또한 유효한 응답 (a-d 또는 A-D)이 작동하지 않는 경우 내 테스트를 시도 할 수있는 다른 방법이 있습니까?C++ : 소문자를 대문자로 저장할 때 올바른 것으로 인식합니까?

char answers[x]; 
cin >> user_guess; 

while (user_guess != "a" || "b" || "c" || "d" || "A" || "B" || "C" || "D") //doesnt work? 
{ 
cout<< "Please correctly identify your answer." << endl; 
cin >> user_guess; 
} 

if (islower (user_guess)) 
{ 
toupper (user_guess)) 
} 
if (user_guess != answers[x]) 
{ 
cout << "incorrect! << endl; 
} 
else 
{ 
cout << "correct!" << endl; 
} 

답변

2

올바른 선택을위한 테스트가 작동하지 않습니다. 이는 이것이 ||의 작동 방식이 아니기 때문입니다. 또한

while (user_guess != "a" && user_guess != "b" && user_guess != "c" && user_guess != "d" 
     user_guess != "A" && user_guess != "B" && user_guess != "C" && user_guess != "D") { 

, 소문자 문자가 아닌 뭔가에 toupper()를 호출에 전혀 해가 없다 : 당신이 필요로하는 것은 무엇인가 같다. 그래서 당신이 단지 수 있습니다

if (toupper(user_guess) != answers[x]) { 

당신이 user_guess 당신이 cin에서 읽을 직후 대문자로 변환하면, 당신은 모두 (대문자 답변에 대해 테스트 할 필요에 의해)은 "유효 추측"시험을 단축 할 수 , 테스트에서 toupper()answers[x]에 대해 생략하십시오.

+0

안녕하세요. 사용해보세요. 감사합니다! – gamergirl22

+0

제안 - 'user_guess'를 대문자로 변환 한 후 모든 단일 문자와 비교하는 대신 범위 검사를 수행하십시오 : 'while (! (user_guess> ='A '&& user_guess <='D '))' – tom

+0

소문자 'tolower'를 사용하고 그 결과에 대해서 네 개의 레이블만으로'switch ' – demorge

관련 문제