2012-02-09 9 views
1

私は正解の1次元配列を持っていますが、それらは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'を使用してから、結果に4つのラベルだけを使用して' switch'します – demorge

関連する問題