いくつかの奇妙な理由で、答えを入力するように求めるループから抜け出すことができません。どんな助けでも素晴らしいでしょう:
#include <iostream>
using namespace std;
int main(){
const int TEST=20;
char crctAnswrs[TEST]={'B', 'D', 'A', 'A', 'C',
'A', 'B', 'A', 'C', 'D',
'B', 'C', 'D', 'A', 'D',
'C', 'C', 'B', 'D', 'A'};
char stdntAnswer[TEST];
for(int index=0; index<TEST; index++){
do{
cout<<"Please enter the answer for question #"<<(index+1)<<": ";
cin.ignore();
char input;
cin.get(input);
stdntAnswer[index]=input;
if(stdntAnswer[index]!='A' && stdntAnswer[index]!='B' &&
stdntAnswer[index]!='C' && stdntAnswer[index]!='D'){
cout<<"Please enter A, B, C, or D as an answer."<<endl;
}
}while(stdntAnswer[index]!='A' && stdntAnswer[index]!='B' &&
stdntAnswer[index]!='C' && stdntAnswer[index]!='D');
}
}
編集:条件を変更しました。この例では間違って入力しました。すべての条件に!=問題があり、ループから抜け出すことはできません。条件の1つが偽の場合、条件セット全体が偽であるため、ループから抜け出すと思います...ただし、A、Bを入力すると、ループが発生し、検証メッセージが表示されます。 、C、またはD .... cin.get()を使用したものですか?getline()は本が求めているものではないので、使いたくありません。