So I've put some more thought and work into this. I think it's almost up to scratch but I know it isn't perfect. I'm struggling with the score variable i.e. where to store it and how to update it. Can't get it working as intended at all. I thought I had it but I guess not. Any suggestions to improve the overall code would be great as I'm sure it is a mess in the eyes of you experts. This is a learning process for me and I appreciate any of your help! Thanks!
Code:
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
const int ARRAY_SIZE = 20;
class Quiz
{
public:
string questAndAns[ARRAY_SIZE][5];
int correctAnswer[ARRAY_SIZE];
int score;
Quiz();
string getQuestion(int num);
void setScore();
int getScore();
};
Quiz::Quiz()
{
questAndAns[0][0] = "What is 3 + 4?";
questAndAns[0][1] = "7";
questAndAns[0][2] = "3";
questAndAns[0][3] = "4";
questAndAns[0][4] = "34";
correctAnswer[0] = 1;
questAndAns[1][0] = "What is 9 - 1?";
questAndAns[1][1] = "10";
questAndAns[1][2] = "8";
questAndAns[1][3] = "91";
questAndAns[1][4] = "0";
correctAnswer[1] = 2;
questAndAns[2][0] = "What is 4 / 2";
questAndAns[2][1] = "42";
questAndAns[2][2] = "8";
questAndAns[2][3] = "2";
questAndAns[2][4] = "4";
correctAnswer[2] = 3;
questAndAns[3][0] = "What is 3 * 1";
questAndAns[3][1] = "1";
questAndAns[3][2] = "4";
questAndAns[3][3] = "0";
questAndAns[3][4] = "3";
correctAnswer[3] = 4;
}//Quiz constructor
string Quiz::getQuestion(int num)
{
return questAndAns[num][0];
}//getQuestion
void Quiz::setScore()
{
score = score+10;
}//setScore
int Quiz::getScore()
{
return score;
}//getScore
/**************************************************************************************/
class Question
{
public:
int input;
string question;
Question(Quiz x, int n);
void printQuestion(Quiz x, int qNum);
int getAnswer();
void checkAnswer(Quiz x, int pInput, int qNum);
};
Question::Question(Quiz x, int n)
{ question = x.getQuestion((n-1));
}//Question constructor
void Question::printQuestion(Quiz x, int qNum)
{ cout << "\nQuestion " << qNum << "\n\n";
cout << question << "\n";
cout << "1) " << x.questAndAns[(qNum-1)][1] << "\n";
cout << "2) " << x.questAndAns[(qNum-1)][2] << "\n";
cout << "3) " << x.questAndAns[(qNum-1)][3] << "\n";
cout << "4) " << x.questAndAns[(qNum-1)][4] << "\n";
}//Question::printQuestion
int Question::getAnswer()
{ cout << "Select answer (1-4) :> ";
cin >> Question::input;
return Question::input;
}//Question::getAnswer
void Question::checkAnswer(Quiz x, int pInput, int qNum)
{ if (input==x.correctAnswer[(qNum-1)])
{ cout << "\nCorrect! 10 points!\n\n";
x.setScore();
}
else
{ cout << "\nWrong!\n\n";
}
}//Question::checkAnswer
int main()
{ int score;
Quiz quiz1;
Question question1(quiz1, 1);
Question question2(quiz1, 2);
Question question3(quiz1, 3);
Question question4(quiz1, 4);
cout << "Welcome to the Quiz!\n";
question4.printQuestion(quiz1, 1);
question4.checkAnswer(quiz1, question4.getAnswer(),1);
question4.printQuestion(quiz1, 2);
question4.checkAnswer(quiz1, question4.getAnswer(),2);
question4.printQuestion(quiz1, 3);
question4.checkAnswer(quiz1, question4.getAnswer(),3);
question4.printQuestion(quiz1, 4);
question4.checkAnswer(quiz1, question4.getAnswer(),4);
score = quiz1.getScore();
cout << "You scored " << score << " points out of a possible " << score * 4;
_getch();
return 0;
}//main
//access restrictions? public private?