Thanks to everyone who has input help so far! I really appreciate it. Anyway, I'm almost finished but this last part is not working. It is my printReport function that is supposed to give a report of the user's overall performance. However, my set1Correct, set2Correct, and set3Correct variables always come out to be 0. It's like they aren't getting the value from my checkAnswer function.
This is my main function
int main()
{
int probsPerSet;
int set1Correct=0;
int set2Correct=0;
int set3Correct=0;
srand(time(0));
getProbsPerSet(probsPerSet);
doOneSet('+',probsPerSet);
doOneSet('-',probsPerSet);
doOneSet('*',probsPerSet);
printReport(probsPerSet, set1Correct, set2Correct, set3Correct);
system("pause");
return 0;
}
This is doOneSet function. I think I need to add another parameter here...
void doOneSet(char problemType, int probsPerSet)
{
int maxNum;
printHeader(problemType);
getMaxNum(maxNum);
for (int i=0;i<probsPerSet;i++)
{
doOneProblem(problemType,probsPerSet,maxNum);
}
}
This is my doOneProblem function which may be where the problem is.
void doOneProblem(char problemType, int probsPerSet, int maxNum)
{
int num1, num2, result, userNum1, set1Correct, set2Correct, set3Correct;
switch (problemType)
{
case '+':generateOperands(num1, num2, maxNum);
calcCorrectAnswer(num1, num2, result, userNum1, problemType);
checkAnswer(result, userNum1, problemType,set1Correct,set2Correct,set3Correct,num1,num2);
break;
case '-':generateOperands(num1, num2, maxNum);
calcCorrectAnswer(num1, num2, result, userNum1, problemType);
checkAnswer(result, userNum1, problemType,set1Correct,set2Correct,set3Correct,num1,num2);
break;
case '*':generateOperands(num1, num2, maxNum);
calcCorrectAnswer(num1, num2, result, userNum1, problemType);
checkAnswer(result, userNum1, problemType,set1Correct,set2Correct,set3Correct,num1,num2);
break;
}
}
My checkAnswer function: or maybe this is the problem. lol!
void checkAnswer(int result, int userNum1, char problemType, int &set1Correct, int &set2Correct, int &set3Correct, int num1, int num2)
{
if(userNum1==result)
{
cout<<"correct"<<endl;
}
else
{
cout<<"incorrect"<<endl;
}
switch (problemType)
{
case '+': if (result=num1+num2)
{
set1Correct=set1Correct+1;
}
break;
case '-':if (result=num1-num2)
{
set2Correct=set2Correct+1;
}
break;
case '*':if (result=num1*num2)
{
set3Correct=set3Correct+1;
}
break;
}
}
And last but not least, the printReport function:
void printReport(int getProbsPerSet, int set1Correct, int set2Correct, int set3Correct)
{
int totalProbs=getProbsPerSet*3;
int totalProbsCorrect=set1Correct+set2Correct+set3Correct;
float set1Percentage=set1Correct/getProbsPerSet*100;
float set2Percentage=set2Correct/getProbsPerSet*100;
float set3Percentage=set3Correct/getProbsPerSet*100;
float totalPercentage=totalProbsCorrect/getProbsPerSet*3;
cout<<endl;
cout<<"Set #1: You got "<<set1Correct<<" out of "<<getProbsPerSet<<"for ";
cout<<set1Percentage<<"%"<<endl;
cout<<"Set #2: You got "<<set2Correct<<" out of "<<getProbsPerSet<<"for ";
cout<<set2Percentage<<"%"<<endl;
cout<<"Set #3: You got "<<set3Correct<<" out of "<<getProbsPerSet<<"for ";
cout<<set3Percentage<<"%"<<endl;
}
Once again, thanks for any pointers.