Question: I created a program to create a test bank using file I/O. The problem is my Professor told me In your QuestionMC class, your function

I created a program to create a test bank using file I/O. The problem is my Professor told me "In your QuestionMC class, your function setQuestion() code section should be in the main() program. Function setQuestion() should take a string as an argument, setQuestion(string). The string is the option - the multiple choice answers string. Then, the function itself should push the string argument into your array - I used vector; easier to push the string. The program does not have to know which subscript to insert the string - it just inserts it." I do not know how to do this can someone explain to me?

My code below:

//============================================================================

// Name: CS215_Joseph_Hoffman_IP2

// Author: Joseph Hoffman

//============================================================================

#include

#include

#include

using namespace std;

//the files I used

ofstream outf;

ifstream inf;

class Question // super class

{

public:

string getQuestion()//gets the question

{

return question;

}

int getValue() //gets the point value of the question

{

return value;

}

virtual void setQuestion(string answer, int value)

{

}

virtual void printOptions()

{

}

virtual string getAnswer()

{

return answer;

}

private:

string question, answer;

int value;

};

class QuestionTF : public Question// class for true and false questions

{

public:

void setQuestion(string theQuestion, int pointValue)

{

string theAnswer;

question = theQuestion;

points = pointValue;

options = "true/false";

//get the answer from the file

getline(inf, theAnswer);

answer = theAnswer;

}

void printOptions()//prints the options for that question

{

cout << question << endl;

cout << answer << endl;

}

string getAnswer()//outputs the answer for that question

{

return answer;

}

private:

string question;

string answer;

int points;

string options;

};

class QuestionMC : public Question//class for multiple choice

{

public:

void setQuestion(string theQuestion, int pointValue)

{

string line;

//get the number of choices from the file

getline(inf, line);

numberOfOptions = stoi(line);

question = theQuestion;

value = pointValue;

//get the individual choice lines and load to options array

for (int count = 0; count

getline(inf, line);

options[count] = line;

}

//get the answer from the file and load into answer

getline(inf, line);

answer = line;

}

void printOptions()// prints the questions, options, and answer

{

char first = 'A';

cout << question << endl;

for (int count = 0; count

cout << first++ << ". " << options[count] << endl;

}

cout << "Answer: " << answer << endl;

}

string getAnswer()// prints the answer

{

return answer;

}

private:

int value, numberOfOptions;

string question, answer;

string options[6];

};

int main() {

Question *myQuestions[10];

string questiontype, questiontxt;

string answertxt, optiontxt;

int numquestions, questionvalue;

// this is something to write the test bank test file from the text given Week 2

// You might use a text file that you create separately and avoid this

// in Week 3 the focus is developing a test file section that can replace this.

outf.open("c:\\temp\\IP2_testbank.txt");

if (outf.is_open())

{

outf << "3 ";

outf << "TF 5 ";

outf << "There exists birds that cannot fly? ";

outf << "true ";

outf << "MC 10 ";

outf << "Who was the President of the USA in 1991? ";

outf << "6 ";

outf << "Richard Nixon ";

outf << "Gerald Ford ";

outf << "Jimmy Carter ";

outf << "Ronald Reagan ";

outf << "George Bush Sr. ";

outf << "Bill Clinton ";

outf << "E ";

outf << "TF 10 ";

outf << "The city of Boston hosted the 2004 Summer Olympics? ";

outf << "false ";

outf.close();

}

else cout << "Unable to open file";

//opening the testbank file and processing as a question of each type

inf.open("c:\\temp\\IP2_testbank.txt");

string line, theQuestion, theAnswer;

if (inf.is_open())

{

//get the number of questions from the first line in the file

getline(inf, line);

numquestions = stoi(line);

for (int count = 0; count

getline(inf, line);

//get the next line with the question type and the value of the question

int npos = line.size();

int prev_pos = 0;

int pos = 0;

while (line[pos] != ' ')

pos++;

questiontype = line.substr(prev_pos, pos - prev_pos);

prev_pos = ++pos;

questionvalue = stoi(line.substr(prev_pos, npos - prev_pos)); //Last word

//process a true/false question

if (questiontype == "TF")

{

myQuestions[count] = new QuestionTF;

getline(inf, theQuestion);

myQuestions[count]->setQuestion(theQuestion, questionvalue);

}

//process a multiple choice question

if (questiontype == "MC")

{

myQuestions[count] = new QuestionMC;

getline(inf, theQuestion);

myQuestions[count]->setQuestion(theQuestion, questionvalue);

}

}

}

//print out the questions that have been processed

for (int count = 0; count

{

myQuestions[count]->printOptions();

cout << endl;

}

getchar();

return 0;

}

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!