//Ryan Robateau CSC5 Chapter 7, P. 446, #9
//
/*******************************************************************************
* Corrected DL Exam
* _____________________________________________________________________________
* This program compares right answers and wrong answers for 20 questions in
* an exam.
*
* For the purposes of this program, a student must answer 15
* out of 20 correctly to pass.
* _____________________________________________________________________________
******************************************************************************/
#include <iostream>
using namespace std;
int main( )
{
const int NUM_Q = 20 ;
char student[ NUM_Q] ; // INPUT - Student Answers
char correct[ NUM_Q] = { 'B' , 'D' , 'A' , 'A' , 'C' ,
'A' , 'B' , 'A' , 'C' , 'D' ,
'B' , 'C' , 'D' , 'A' , 'D' ,
'C' , 'C' , 'B' , 'D' , 'A' } ;
int numWrong = 0 ; // OUTPUT - Nmber of wrong answers
int numCorrect = 0 ; // OUTPUT - Number of correct answers
int count;
int incorrect[ NUM_Q] ;
for ( count = 0 ; count < NUM_Q; count++ )
{
cout << "Enter your answer for #" << count + 1 << ": " << endl;
cin >> student[ count] ;
while ( student[ count] ! = 'A' && student[ count] ! = 'B' && student[ count]
! = 'C' && student[ count] ! = 'D' )
{
cout << endl;
cout << "<ERROR: Please input a valid answer A, B, C, or D>" ;
cout << endl << endl;
cout << "Enter your answer for #" << count + 1 << ": " << endl;
cin >> student[ count] ;
}
}
// Correct the student's test
for ( count = 0 ; count < NUM_Q; count++ )
{
if ( student[ count] == correct[ count] )
numCorrect++ ;
else
{
numWrong++ ;
incorrect[ count - numCorrect] = count + 1 ;
}
}
// Determine passing or failing
if ( numCorrect >= 15 )
cout << "\n You've passed the test!" << endl;
else
cout << "\n You failed the test." << endl;
// Display score details
cout << "Score: " << numCorrect << "/" << NUM_Q << endl;
cout << "Number of incorrect answers: " << numWrong << endl;
cout << "Incorrectly answered questions: " ;
for ( count = 0 ; count < numWrong; count++ )
{
cout << "#" << incorrect[ count] << " " ;
}
return 0 ;
}
Ly9SeWFuIFJvYmF0ZWF1CQkJCSAgICAgICAgIENTQzUgICAJCQkgICBDaGFwdGVyIDcsIFAuIDQ0NiwgIzkKLy8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29ycmVjdGVkIERMIEV4YW0KICogX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KICogVGhpcyBwcm9ncmFtIGNvbXBhcmVzIHJpZ2h0IGFuc3dlcnMgYW5kIHdyb25nIGFuc3dlcnMgZm9yIDIwIHF1ZXN0aW9ucyBpbiAKICogYW4gZXhhbS4KICogCiAqIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBwcm9ncmFtLCBhIHN0dWRlbnQgbXVzdCBhbnN3ZXIgMTUgCiAqIG91dCBvZiAyMCBjb3JyZWN0bHkgdG8gcGFzcy4KICogX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCmludCBtYWluKCkgCnsKCQoJY29uc3QgaW50IE5VTV9RID0gMjA7CQoJY2hhciBzdHVkZW50W05VTV9RXTsJLy8gSU5QVVQgLSBTdHVkZW50IEFuc3dlcnMKCWNoYXIgY29ycmVjdFtOVU1fUV0gPSB7J0InLCAnRCcsICdBJywgJ0EnLCAnQycsCgkJCQkJCSAgICdBJywgJ0InLCAnQScsICdDJywgJ0QnLCAKCQkJCQkJICAgJ0InLCAnQycsICdEJywgJ0EnLCAnRCcsIAoJCQkJCQkgICAnQycsICdDJywgJ0InLCAnRCcsICdBJ307IAoJaW50IG51bVdyb25nID0gMDsJCS8vIE9VVFBVVCAtIE5tYmVyIG9mIHdyb25nIGFuc3dlcnMKCWludCBudW1Db3JyZWN0ID0gMDsJCS8vIE9VVFBVVCAtIE51bWJlciBvZiBjb3JyZWN0IGFuc3dlcnMKCWludCBjb3VudDsKCWludCBpbmNvcnJlY3RbTlVNX1FdOwogCglmb3IgKGNvdW50ID0gMDsgY291bnQgPCBOVU1fUTsgY291bnQrKykKCXsKCQljb3V0IDw8ICJFbnRlciB5b3VyIGFuc3dlciBmb3IgIyIgPDwgY291bnQgKyAxIDw8ICI6ICIgPDwgZW5kbDsKCQljaW4gPj4gc3R1ZGVudFtjb3VudF07CiAKCQkKCQl3aGlsZSAoc3R1ZGVudFtjb3VudF0gIT0gJ0EnICYmIHN0dWRlbnRbY291bnRdICE9ICdCJyAmJiBzdHVkZW50W2NvdW50XSAKCQkhPSAnQycgJiYgc3R1ZGVudFtjb3VudF0gIT0gJ0QnKQoJCXsKCQkJY291dCA8PCBlbmRsOwoJCQljb3V0IDw8ICI8RVJST1I6IFBsZWFzZSBpbnB1dCBhIHZhbGlkIGFuc3dlciBBLCBCLCBDLCBvciBEPiI7CgkJCWNvdXQgPDwgZW5kbCA8PCBlbmRsOwoJCQljb3V0IDw8ICJFbnRlciB5b3VyIGFuc3dlciBmb3IgIyIgPDwgY291bnQgKyAxIDw8ICI6ICIgPDwgZW5kbDsKCQkJY2luID4+IHN0dWRlbnRbY291bnRdOwoJCX0KCX0KIAoJLy8gQ29ycmVjdCB0aGUgc3R1ZGVudCdzIHRlc3QKCWZvciAoY291bnQgPSAwOyBjb3VudCA8IE5VTV9ROyBjb3VudCsrKQoJewoJCWlmIChzdHVkZW50W2NvdW50XSA9PSBjb3JyZWN0W2NvdW50XSkKCQkJbnVtQ29ycmVjdCsrOwoJCWVsc2UKCQl7CgkJCW51bVdyb25nKys7CgkJCWluY29ycmVjdFtjb3VudCAtIG51bUNvcnJlY3RdID0gY291bnQgKyAxOwoJCX0KCX0KIAoJLy8gRGV0ZXJtaW5lIHBhc3Npbmcgb3IgZmFpbGluZwoJaWYgKG51bUNvcnJlY3QgPj0gMTUpCgkJY291dCA8PCAiXG5Zb3UndmUgcGFzc2VkIHRoZSB0ZXN0ISIgPDwgZW5kbDsKCWVsc2UgCgkJY291dCA8PCAiXG5Zb3UgZmFpbGVkIHRoZSB0ZXN0LiIgPDwgZW5kbDsKIAoJLy8gRGlzcGxheSBzY29yZSBkZXRhaWxzCgljb3V0IDw8ICJTY29yZTogIiA8PCBudW1Db3JyZWN0IDw8ICIvIiA8PCBOVU1fUSA8PCBlbmRsOwoJY291dCA8PCAiTnVtYmVyIG9mIGluY29ycmVjdCBhbnN3ZXJzOiAiIDw8IG51bVdyb25nIDw8IGVuZGw7Cgljb3V0IDw8ICJJbmNvcnJlY3RseSBhbnN3ZXJlZCBxdWVzdGlvbnM6ICI7IAoJZm9yIChjb3VudCA9IDA7IGNvdW50IDwgbnVtV3Jvbmc7IGNvdW50KyspCgl7CgkJY291dCA8PCAiIyIgPDwgaW5jb3JyZWN0W2NvdW50XSA8PCAiICI7Cgl9CglyZXR1cm4gMDsKfQ==