Need some help with this program.

Although I am not finished yet, I can't seem to figure out how to get the program to signal an error if the user enters anything other then A, B, C, D. I have a while loop but I'm not sure if this is the way do solve this. Any help is appreciated.

The local Driver’s License Office has asked you to write a program that grades the written portion of the driver’s license exam. The exam has 20 multiple choice questions. Here are the correct answers:
1. B 6. A 11. B 16. C
2. D 7. B 12. C 17. C
3. A 8. A 13. D 18. B
4. A 9. C 14. A 19. D
5. C 10. D 15. D 20. A

Your program should store the correct answers shown above in an array. It should ask the user to enter the student’s answers for each of the 20 questions, which should be stored in another array. After the student’s answers have been entered, the program should display a message indicating whether the student passed or failed the exam. (A student must correctly answer 15 of the 20 questions to pass the exam.) It should then display the total number of correctly answered questions, the total number of incorrectly answered questions, and a list showing the question numbers of the incorrectly answered questions.

**Input Validation: Only accept the letters A, B, C, or D as answers.**

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
 #include <iostream>

using namespace std;


int main()
{
	char answers[20];
	char usersAnswers[20];
	int i;
	int correct;
	int incorrect;
{	answers[0] = 'A';
	answers[1] = 'D';
	answers[2] = 'B';
	answers[3] = 'B';
	answers[4] = 'C';
	answers[5] = 'B';
	answers[6] = 'A';
	answers[7] = 'B';
	answers[8] = 'C';
	answers[9] = 'D';
	answers[10] = 'A';
	answers[11] = 'C';
	answers[12] = 'D';
	answers[13] = 'B';
	answers[14] = 'D';
	answers[15] = 'C';
	answers[16] = 'C';
	answers[17] = 'A';
	answers[18] = 'D';
	answers[19] = 'B';
}	

// Loop for displaying the correct answers //

	for (int i = 0; i < 20; i++)
	{
		cout << answers[i] << endl;
	}

//Loop allowing the user to enter their answers //
	
	for (int i = 0; i < 20; i++)
	
	{	
		cout << "Enter your answers:" << endl;
		cin >> usersAnswers[i];
	
	if (usersAnswers[i] != 'A' && usersAnswers[i] != 'B' && usersAnswers[i] != 'C' && usersAnswers[i] != 'D')
	
		cout << "You must enter A, B, C, D \n" << endl;
		cout << "Enter your answers: " << endl;
		cin >> usersAnswers[i];
	}	
	
	
	for (int i = 0; i < 20; i++)
	
		if (usersAnswers[i] == answers[i])
	{		cin>> correct;
		cout << "Correct" << endl;
	
		if (usersAnswers[i] != answers[i])
		
			cin>> incorrect;
		cout << "Inncorrect" << endl;
	}
		if (correct > 14)
	{		cout <<"Congradulations!!! You Passed!!!" << endl;
		}	else
	{	cout <<"You Failed" << endl;
	}
	return 0;
}
 
Last edited on
You should move the test for valid characters into your loop allowing the user to enter their answers -- you don't need the while-loop.
I made some changes but now when I try to run the program, it only recognizes an incorrect user input for every OTHER entry.
Can you post your latest version please?
Topic archived. No new replies allowed.