Program Closes After Input

I am new to C++ and I am trying to create a program that is like a math game suitable for children with a menu and functions for the four main mathematical functions. When I input a letter to select the function, the program quits and I don't know why. I am not getting any errors. It would be great if someone would be able to help me. Thank you!

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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>

using namespace std;

int main()
{   
	char problemType = '\0';
	int firstNum, secondNum, userAnswer, correctAnswer;
	cout << "Enter A for an addition problem " << endl;
	cout << "Enter S for a subtraction problem " << endl;
	cout << "Enter M for a multiplication problem " << endl;
	cout << "Enter D for a division problem " << endl;
	cout << "Enter Exit to leave the program" << endl;
	cin >> problemType;
	if (problemType = 'A');
		{
		bool addition(int firstNum, int secondNum, int userAnswer, int correctAnswer);

		firstNum = rand() % 50 + 1;
		secondNum = rand() % 50 + 1;

		return firstNum, secondNum;

		correctAnswer = firstNum + secondNum;
		cin >> userAnswer;

		if (userAnswer = correctAnswer)
			cout << "Correct!";
		else
			cout << "Incorrect, the correct response is " << correctAnswer << endl;
		}

	if (problemType = 'M');
		{
		bool multiplication(int firstNum, int secondNum, int userAnswer, int correctAnswer);

		firstNum = rand() % 50 + 1;
		secondNum = rand() % 50 + 1;

		return firstNum, secondNum;

		correctAnswer = firstNum * secondNum;
		cin >> userAnswer;

		if (userAnswer = correctAnswer)
			cout << "Correct!";
		else
			cout << "Incorrect, the correct response is " << correctAnswer << endl;
		}

	if (problemType = 'S');
		{
		bool subtraction(int firstNum, int secondNum, int userAnswer, int correctAnswer);

		firstNum = rand() % 50 + 1;
		secondNum = rand() % 50 + 1;

		return firstNum, secondNum;

		correctAnswer = firstNum - secondNum;
		cin >> userAnswer;

		if (userAnswer = correctAnswer)
			cout << "Correct!";
		else
			cout << "Incorrect, the correct response is " << correctAnswer << endl;
		}

	if (problemType = 'D');
		{
		bool division(int firstNum, int secondNum, int userAnswer, int correctAnswer);

		firstNum = rand() % 50 + 1;
		secondNum = rand() % 50 + 1;

		return firstNum, secondNum;

		correctAnswer = firstNum / secondNum;
		cin >> userAnswer;

		if (userAnswer = correctAnswer)
			cout << "Correct!";
		else
			cout << "Incorrect, the correct response is " << correctAnswer << endl;
		}

	if (problemType = 'Exit');
		{
		exit;
		}
}	

bool addition(int firstNum, int secondNum, int userAnswer, int correctAnswer)
	{	
		firstNum = rand() % 50 + 1;
		secondNum = rand() % 50 + 1;

		correctAnswer = firstNum + secondNum;

		cout << "Type in the answer to the problem and press enter" << endl;
		cout << "***********************************************************" << endl;
		cout << "************************Addition***************************" << endl;
		cout << "***********************************************************" << endl;
		cout << "**                      firstNum                         **" << endl;
		cout << "**                    + secondNum                        **" << endl;
		cout << "**                      _________                        **" << endl;
		cout << "**                                                       **" << endl;
		cout << "***********************************************************" << endl;
		cout << "***********************************************************" << endl;

		cin >> userAnswer;

		return firstNum, secondNum;
	}

bool multiplication(int firstNum, int secondNum, int userAnswer, int correctAnswer)
{		
		firstNum = rand() % 50 + 1;
		secondNum = rand() % 50 + 1;

		correctAnswer = firstNum * secondNum;

		cout << "Type in the answer to the problem and press enter" << endl;
		cout << "***********************************************************" << endl;
		cout << "********************Multiplication*************************" << endl;
		cout << "***********************************************************" << endl;
		cout << "**                      firstNum                         **" << endl;
		cout << "**                    x secondNum                        **" << endl;
		cout << "**                      _________                        **" << endl;
		cout << "**                                                       **" << endl;
		cout << "***********************************************************" << endl;
		cout << "***********************************************************" << endl;

		cin >> userAnswer;

		return firstNum, secondNum;
}

bool subtraction(int firstNum, int secondNum, int userAnswer, int correctAnswer)
	{	
		firstNum = rand() % 50 + 1;
		secondNum = rand() % 50 + 1;

		correctAnswer = firstNum - secondNum;

		cout << "Type in the answer to the problem and press enter" << endl;
		cout << "***********************************************************" << endl;
		cout << "***********************Subtraction*************************" << endl;
		cout << "***********************************************************" << endl;
		cout << "**                      firstNum                         **" << endl;
		cout << "**                    - secondNum                        **" << endl;
		cout << "**                      _________                        **" << endl;
		cout << "**                                                       **" << endl;
		cout << "***********************************************************" << endl;
		cout << "***********************************************************" << endl;

		return firstNum, secondNum;
	}

bool division(int firstNum, int secondNum, int userAnswer, int correctAnswer)
	{	
		firstNum = rand() % 50 + 1;
		secondNum = rand() % 50 + 1;

		correctAnswer = firstNum / secondNum;

		cout << "Type in the answer to the problem and press enter" << endl;
		cout << "***********************************************************" << endl;
		cout << "************************Division***************************" << endl;
		cout << "***********************************************************" << endl;
		cout << "**                      firstNum                         **" << endl;
		cout << "**                      secondNum                        **" << endl;
		cout << "**                      _________                        **" << endl;
		cout << "**                                                       **" << endl;
		cout << "***********************************************************" << endl;
		cout << "***********************************************************" << endl;

		cin >> userAnswer;

		return firstNum, secondNum;
	}
Last edited on
closed account (48T7M4Gy)
You are trying to input a character as a constant (read only) pointer to a character which is impossible on a number of levels.

Replace line 9 with char problemType = '\0'; and see how things work out.
closed account (48T7M4Gy)
Now you go from char* to bool??
closed account (48T7M4Gy)
Also the comparison characters should be 'A' etc not "A"
I replaced line 9 with char problemType = '\0'; and the program still closes after input
closed account (48T7M4Gy)
3 things:

1.
if (problemType = 'Exit');
{
exit;
}

you can't do that if problemType is a char - ie a single character. You must use "" not ' ' for strings anyway. ' ' is only for a single character

2. exit probably should be exit(0) but that aside it closes the program down - not what u want I reckon.

3, If you want to keep the console open make your last lines
1
2
system("pause")
return 0; // not really necessary for main, but just to keep things consistent. 

The pause will do the job and you'll get a call from the police but I'm sure you'll cope and when u get time find out how to pause properly.
Last edited on
I added
1
2
system("pause")
return 0;
to the last lines of all my functions and main and it still closes after input.
closed account (48T7M4Gy)
Yeah, I can now see you have problems with your main section having multiple returns and exits. All of these effectively shut the console down!

You need to understand what they do and when/where is the appropriate time to use them.

Read a tutorial (here) but for the mean time you can safely delete the exit stuff and all but one return in main once you decide (pseudocode !!!) what your program is supposed to do instead of what you are telling it what to do which is basically return control to the system and close the door. :)

PS Use this as a model:
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
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>

using namespace std;

int main()
{   
	char problemType = '\0';
	int firstNum = 0, secondNum = 0, correctAnswer = 0;
	int userAnswer = 0;
	
	cout << "Enter A for an addition problem " << endl;
	cout << "Enter S for a subtraction problem " << endl;
	cout << "Enter M for a multiplication problem " << endl;
	cout << "Enter D for a division problem " << endl;
	cout << "Enter Exit to leave the program" << endl;
	cin >> problemType;
	if (problemType == 'A')
	{
		firstNum = rand() % 50 + 1;
		secondNum = rand() % 50 + 1;
		
		correctAnswer = firstNum + secondNum;
		cout << "What is " << firstNum << " + " << secondNum << " ? ";
		cin >> userAnswer;

		if (userAnswer == correctAnswer)
			cout << "Correct!";
		else
			cout << "Incorrect, the correct response is " << correctAnswer << endl;
	}
	else
		cout << "Nothing other than addition is important in life ;)" << endl;

// All your other stuff goes here as before, not forgetting function calls, prototypes and
// definitions
		
	system("pause");// call the cops or http://www.cplusplus.com/forum/beginner/1988/
	return 0;
}
Last edited on
Thank you so much!
Topic archived. No new replies allowed.