Program Calls The Wrong Function?

I am writing a code for a math game with separate functions for each of the four mathematical functions. For some reason, whenever I input D for division as my problem type, my program calls the subtraction function. Also, instead of asking the user if they'd like to continue to another problem after answering, my program displays another problem.

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
186
187
188
189
190
191
192
193
194
195
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>

using namespace std;

bool addition(int firstNum, int secondNum, int userAnswer, int correctAnswer) 
{	
		firstNum = rand() % 20 + 1;											
		secondNum = rand() % 20 + 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;												

		if (userAnswer == correctAnswer)							
		{
			cout << "Congratulations..You are Correct" << endl;									
		}
		else if (userAnswer != correctAnswer)						
		{
			cout << "Incorrect..The correct answer is... " << correctAnswer << endl;	
		}

		return 0;						
}

bool multiplication(int firstNum, int secondNum, int userAnswer, int correctAnswer) 
{		
		firstNum = rand() % 20 + 1;															
		secondNum = rand() % 20 + 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;																				

		if (userAnswer == correctAnswer)								
		{
			cout << "Congratulations..You are Correct" << endl;											
		}
		else if (userAnswer != correctAnswer)							
		{
			cout << "Incorrect..The correct answer is... " << correctAnswer << endl; 
		}

		return 0;							
}

bool subtraction(int firstNum, int secondNum, int userAnswer, int correctAnswer) 
{	
		firstNum = rand() % 20 + 1;												
		secondNum = rand() % 20 + 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;

		cin >> userAnswer;																		

		if (userAnswer == correctAnswer)							
		{
			cout << "Congratulations..You are Correct" << endl;										
		}
		else if (userAnswer != correctAnswer)						
		{
			cout << "Incorrect..The correct answer is... " << correctAnswer << endl; //output the correct answer
		}

		return 0;						//return values
}

bool division(int firstNum, int secondNum, int userAnswer, int correctAnswer) //division function
{	
		firstNum = rand() % 20 + 1;												//first number random between 1 and 20
		secondNum = rand() % 20 + 1;											//second number random between 1 and 20
		do{
			if (secondNum = 0)													//if the divisor is 0,
			{
				secondNum = rand() % 20 + 1;									//generate another random number,
			}
		}while (secondNum = 0);													//until it is no longer 0

		correctAnswer = firstNum / secondNum;									//correct answer is first number divided by the second

		cout << "Type in the answer to the problem and press enter" << endl;  //instructions
		cout << "***********************************************************" << endl;
		cout << "************************Division***************************" << endl;
		cout << "***********************************************************" << endl;
		cout << "**                   "<< firstNum <<"                      **" << endl;	//displays first number
		cout << "**                          %                            **" << endl;
		cout << "**                   "<< secondNum <<"                     **" << endl;	//displays second number
		cout << "**                                                       **" << endl;
		cout << "***********************************************************" << endl;
		cout << "***********************************************************" << endl;

		cin >> userAnswer;																//input user answer

		if (userAnswer == correctAnswer)							//if the answer input by the user is correct,
		{
			cout << "Congratulations..You are Correct" << endl;										//output correct
		}
		else if (userAnswer != correctAnswer)						//if the answer is incorrect,
		{
			cout << "Incorrect..The correct answer is... " << correctAnswer << endl; //output the correct answer
		}

		return 0;				//return values
}

int main(char continueOrNot)
{   
	do{char problemType = '\0'; //declares problem type for the user to decide what mathematical function to use
		continueOrNot = '\0';
		int firstNum;			//declares first number for each problem
		int secondNum;			//declares second number for each problem
		int userAnswer;			//declares answer the user inputs
		int correctAnswer;		//declares correct answer for each problem
		firstNum = 0;			//to begin, set all equal to 0
		secondNum = 0;
		userAnswer = 0;
		correctAnswer = 0;
		cout << "Enter A for an addition problem" << endl;		//instructions on how to choose the mathematical function
		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 E to exit the program" << endl;
		cin >> problemType;										//input type of problem

		if (problemType == 'A')											//if the problem type is A,
		{
			addition(firstNum, secondNum, userAnswer, correctAnswer);   //call the addition function
		}

		if (problemType == 'M')												//if the problem type is M,
		{
			multiplication(firstNum, secondNum, userAnswer, correctAnswer);	//call multiplication function
		}

		if (problemType = 'S')											//if the problem type is S,	
		{
			subtraction(firstNum, secondNum, userAnswer, correctAnswer); //call subtraction function
		}

		if (problemType == 'D')											//if the problem type is D,
		{
			division(firstNum, secondNum, userAnswer, correctAnswer);	//call the division function
		}	

		if (problemType == 'E')	//if the problem type is E,
		{
			exit(0);			//exit the program
		}

		cout << "Enter C for another problem" << endl; //enter C to continue to another problem
		cout << "Enter E to exit the program" << endl; 
		cin >> continueOrNot;
	}while (continueOrNot == 'C');	

	if (continueOrNot == 'E')	
	{
		exit(0);			
	}
}
Last edited on
return firstNum, secondNum, userAnswer, correctAnswer;

Dude, you can only return one value from a function. Returning 4 things makes no sense at all. why are you trying to do this, you don't use any of the variables back in main() anyway.
Last edited on
ok, I now have it so it only returns 0 and it still does the same thing
if (problemType = 'S') <--- wrong. you need '=='. You've done it 'right' for the others.
Thank you very much! I would never have noticed that
Topic archived. No new replies allowed.