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
Get step-by-step solutions from verified subject matter experts
