A Console-Based
Multiple Choice Question


Programming a Multiple-Choice Question

 

Introduction

During the execution of a program, the computer will face two types of situations: those it is prepared to deal with and those it doesn’t like. Imagine you write a program that asks the user to supply two numbers to perform a calculation.
 

Practical Learning: Introduction to Exceptions

  1. Create a new Console Application using the Console Wizard
  2. To save the project, on the Standard toolbar, click the Save All button.
  3. Create a new folder named BibleQuiz and display it in the Save In combo box.
  4. Save the unit as Exercise
  5. Save the project as MCQ
  6. Change the content of the file with the following:
     
    //---------------------------------------------------------------------------
    #include <algorithm>
    #include <vector>
    #include <functional>
    #include <iostream>
    using namespace std;
    #include <conio.h>
    
    #pragma hdrstop
    
    //---------------------------------------------------------------------------
    
    #pragma argsused
    //---------------------------------------------------------------------------
    const int NbrOfQuestions = 22;
    //---------------------------------------------------------------------------
    int __fastcall AskQuestion(int q, double &m);
    void __fastcall Verify(int);
    //---------------------------------------------------------------------------
    int main(int argc, char* argv[])
    {
     	int i, n;
    	double Average, Sum = 0;
    	typedef vector<int> IntVector;
    	typedef IntVector::iterator IntVectorIt;
    
    	IntVector QuestNbr(NbrOfQuestions);
    	IntVectorIt Start, End;
    
    	for(i = 0; i < NbrOfQuestions; i++)
    		QuestNbr[i] = i;
    
    	Start = QuestNbr.begin();
    	End = QuestNbr.end();
    
    	srand(time(0));
        random_shuffle(Start, End);
    
    	cout << " - Multiple Choice Question -\n\n";
    	do {
    		cout << "How many questions (1-20)? ";
    		cin >> n;
    	} while(n < 1 || n > 20);
    
        clrscr();
    
    	for(i = 0; i < n; i++)
    	{
            clrscr();
    		cout << "Question " << i + 1 << ": ";
    		AskQuestion(QuestNbr[i], Sum);
            getchar();
    	}
    
        clrscr();
    	Average = (Sum / n) * 100;
    	cout << "Answers Overview\n";
    	cout << "Your answers were";
    
    	cout << "\nGood Answers: " << Sum;
    	cout << "\nAverage:      " << Average<< "%";
    
        cout << "\n\nPress any key to continue...";
        getchar();
        return 0;
    }
    //---------------------------------------------------------------------------
    int __fastcall AskQuestion(int q, double &m)
    {
    	char Answer[10];
    
    	switch(q)
    	{
    	case 0:
    		cout << "\nWho was Jesus Christ\'s mother ? ";
    		cout << "\n1. Leah"
    			 << "\n2. Marthe"
    			 << "\n3. Mary"
    			 << "\n4. salome"
    			 << "\nAnswer: ";
    		cin >> Answer;
    		if(Answer[0] == '3')
    		{
    			cout << "\nGood Answer";
    			cout << "\nRef: Lk 1:26-31";
    			m += 1;
    		}
    		else
            {
                cout << "\nWrong Answer!";
    			Verify(0);
            }
    		break;
    
    	case 1:
    		cout << "\nHow many books are in the canonical Bible?";
    		cout << "\n1. 33"
    			 << "\n2. 44"
    			 << "\n3. 55"
    			 << "\n4. 66"
    			 << "\nAnswer: ";
    		cin >> Answer;
    		if(Answer[0] == '4')
    		{
    			cout << "Good Answer\n";
    			m += 1;
    		}
    		else
            {
                cout << "Wrong Answer!";
    			Verify(1);
            }
    		break;
    
    	case 2:
    		cout << "\nWhat is the first book of the Bible ?";
    		cout << "\n1. Malachi"
    			 << "\n2. Isaiah"
    			 << "\n3. Revelation"
    			 << "\n4. Genesis"
    			 << "\nAnswer: ";
    		cin >> Answer;
    		if(Answer[0] == '4')
    		{
    			cout << "Good Answer\n";
    			m += 1;
    		}
    		else
            {
                cout << "Wrong Answer!";
    			Verify(2);
            }
    		break;
    
    	case 3:
    		cout << "\nWhich one of Jacob\'s sons was Joseph\'s "
                 << "brother, his own mother\'s son ?";
    		cout << "\n1. Levi"
    			 << "\n2. Judah"
    			 << "\n3. Asher"
    			 << "\n4. Benjamin"
    			 << "\nAnswer: ";
    		cin >> Answer;
    		if(Answer[0] == '4')
    		{
    			cout << "\nGood Answer";
    			cout << "\nRef: Ge 43:29";
    			m += 1;
    		}
    		else
            {
                cout << "Wrong Answer!";
    			Verify(3);
            }
    		break;
    
    	case 4:
    		cout << "\nWhat happened to Ananias and Sapphira after they lied "
                 << "about the money\nthey collected from selling the land ?";
    		cout << "\n1. They died"
    			 << "\n2. They got sick"
    			 << "\n3. They were abandoned by the other discples in the bush"
    			 << "\n4. They were drowned in the sea of Galilee"
    			 << "\nAnswer: ";
    		cin >> Answer;
    		if(Answer[0] == '1')
    		{
    			cout << "\nGood Answer";
    			cout << "\nRef: Ac 5:1-11";
    			m += 1;
    		}
    		else          
            {
                cout << "Wrong Answer!";
    			Verify(4);
            }
    		break;
    
    	case 5:
    		cout << "\nHow many apostles did Jesus Christ have?";
    		cout << "\n1. 3"
    			 << "\n2. 6"
    			 << "\n3. 9"
    			 << "\n4. 12"
    			 << "\nAnswer: ";
    		cin >> Answer;
    		if(Answer[0] == '4')
    		{
    			cout << "Good Answer\n";
    			m += 1;
    		}
    		else            
            {
                cout << "Wrong Answer!";
    			Verify(5);
            }
    		break;
    
    	case 6:
    		cout << "\nWhat was the craftiest of the wild animals "
                 << "the Lord had made?";
    		cout << "\n1. The dragon"
    			 << "\n2. The serpent"
    			 << "\n3. The lion"
    			 << "\n4. The Dove"
    			 << "\nAnswer: ";
    		cin >> Answer;
    		if(Answer[0] == '2')
    		{
    			cout << "Good Answer\n";
    			m += 1;
    		}
    		else        
            {
                cout << "Wrong Answer!";
    			Verify(6);
            }
    		break;
    
    	case 7:
    		cout << "\nTo which disciple did Jesus promise the key\n"
                 << "of the kingdom of heaven ?";
    		cout << "\n1. John"
    			 << "\n2. Peter"
    			 << "\n3. Philip"
    			 << "\n4. Paul"
    			 << "\nAnswer: ";
    		cin >> Answer;
    		if(Answer[0] == '4')
    		{
    			cout << "Good Answer\n";
    			m += 1;
    		}
    		else        
            {
                cout << "Wrong Answer!";
    			Verify(7);
            }
    		break;
    
    	case 8:
    		cout << "\nHow does Paul address Timothy in 1 Timothy?";
    		cout << "\n1. My disciple"
    			 << "\n2. My brother"
    			 << "\n3. My son"
    			 << "\n4. My father"
    			 << "\nAnswer: ";
    		cin >> Answer;
    		if(Answer[0] == '3')
    		{
    			cout << "\nGood Answer";
    			m += 1;
    		}
    		else              
            {
    			Verify(8);
                cout << "\nWrong Answer!";
            }
            cout << endl;
    		break;
    
    	case 9:
    		cout << "\nWho was the father of the 12 patriarchs?";
    		cout << "\n1. Noah"
    			 << "\n2. Abraham"
    			 << "\n3. Isaac"
    			 << "\n4. Jacob"
    			 << "\nAnswer: ";
    		cin >> Answer;
    		if(Answer[0] == '4')
    		{
    			cout << "\nGood Answer";
    			m += 1;
    		}
    		else             
            {
                cout << "\nWrong Answer!";
    			Verify(9);
    
            }
            cout << endl;
    		break;
    
    	case 10:
    		cout << "\nWho was the firstborn son of Adam and Eve?";
    		cout << "\n1. Abel"
    			 << "\n2. Cain"
    			 << "\n3. Shem"
    			 << "\n4. Japhet"
    			 << "\nAnswer: ";
    		cin >> Answer;
    		if(Answer[0] == '2')
    		{
    			cout << "Good Answer\n";
    			m += 1;
    		}
    		else             
            {
                cout << "Wrong Answer!";
    			Verify(10);
            }
            cout << endl;
    		break;
    
    	case 11:
    		cout << "\nTo whom did James address his book?";
    		cout << "\n1. The 12 tribes"
    			 << "\n2. To those who have received faith"
    			 << "\n3. To the believers"
    			 << "\n4. To Epaphroditus"
    			 << "\nAnswer: ";
    		cin >> Answer;
    		if(Answer[0] == '1')
    		{
    			cout << "Good Answer\n";
    			m += 1;
    		}
    		else                
            {
                cout << "Wrong Answer!";
    			Verify(11);
            }
            cout << endl;
    		break;
    
    	case 12:
    		cout << "\nWhat did Micah from the hill country of Ephraim "
                 << "do of the\nyoung Levite who came to stay with him?";
    		cout << "\n1. He taught him to raise the sheep"
    			 << "\n2. He made him a priest"
    			 << "\n3. He killed him"
    			 << "\n4. He sent him away"
    			 << "\nAnswer: ";
    		cin >> Answer;
    		if(Answer[0] == '2')
    		{
    			cout << "\nGood Answer\n";
    			m += 1;
    		}
    		else               
            {
                cout << "\nWrong Answer!";
    			Verify(12);
            }
            cout << endl;
    		break;
    
    	case 13:
    		cout << "\nWhat was Paul's former name?";
    		cout << "\n1. Barnabas"
    			 << "\n2. Mark"
    			 << "\n3. Matthias"
    			 << "\n4. Saul"
    			 << "\nAnswer: ";
    		cin >> Answer;
    		if(Answer[0] == '4')
    		{
    			cout << "Good Answer\n";
    			m += 1;
    		}
    		else            
            {
                cout << "Wrong Answer!";
    			Verify(13);
            }
    		break;
    
    	case 14:
    		cout << "\nIn the parable of the weed, what does the field represent?";
    		cout << "\n1. The Ocean"
    			 << "\n2. The world"
    			 << "\n3. The kingdom"
    			 << "\n4. The Earth"
    			 << "\nAnswer: ";
    		cin >> Answer;
    		if(Answer[0] == '2')
    		{
    			cout << "Good Answer\n";
    			m += 1;
    		}
    		else                
            {
                cout << "Wrong Answer!";
    			Verify(14);
            }
    		break;
    
    	case 15:
    		cout << "\nHow many people (including Noah) got in the ark he built?";
    		cout << "\n1. 6"
    			 << "\n2. 7"
    			 << "\n3. 8"
    			 << "\n4. 9"
    			 << "\nAnswer: ";
    		cin >> Answer;
    		if(Answer[0] == '2')
    		{
    			cout << "Good Answer\n";
    			m += 1;
    		}
    		else                
            {
                cout << "Wrong Answer!";
    			Verify(15);
            }
    		break;
    
    	case 16:
    		cout << "\nWho was John the Baptist\'s mother?";
    		cout << "\n1. Salome"
    			 << "\n2. mary"
    			 << "\n3. Elizabeth"
    			 << "\n4. Rebecah"
    			 << "\nAnswer: ";
    		cin >> Answer;
    		if(Answer[0] == '3')
    		{
    			cout << "Good Answer\n";
    			m += 1;
    		}
    		else        
            {
                cout << "Wrong Answer!";
    			Verify(16);
            }
    		break;
    
    	case 17:
    		cout << "\nIn how many pieces did the young Levite whose"
                 << "concubine was raped by the men of Gibeah cut her?";
    		cout << "\n1. 3"
    			 << "\n2. 7"
    			 << "\n3. 12"
    			 << "\n4. 36"
    			 << "\nAnswer: ";
    		cin >> Answer;
    		if(Answer[0] == '3')
    		{
    			cout << "\nGood Answer";
    			m += 1;
    		}
    		else
            {
                cout << "\nWrong Answer!";
    			Verify(17);
            }
    		break;
    
    	case 18:
    		cout << "\n\"If anyone would come after me, he must deny\n"
                 << "himself and take up his cross and follow me.\"";
            cout << "\nWho said or wrote it ?";
    		cout << "\n1. Moses"
    			 << "\n2. John the Baptist"
    			 << "\n3. Jesus Christ"
    			 << "\n4. Paul"
    			 << "\nAnswer: ";
    		cin >> Answer;
    		if(Answer[0] == '3')
    		{
    			cout << "\nGood Answer";
    			m += 1;
    		}
    		else               
            {
                cout << "\nWrong Answer!";
    			Verify(18);
            }
    		break;
    
    	case 19:
    		cout << "\nHow old was Abraham when he died?";
    		cout << "\n1. 175"
    			 << "\n2. 230"
    			 << "\n3. 310"
    			 << "\n4. 425"
    			 << "\nAnswer: ";
    		cin >> Answer;
    		if(Answer[0] == '1')
    		{
    			cout << "\nGood Answer";
    			m += 1;
    		}
    		else
            {
                cout << "\nWrong Answer!";
    			Verify(19);
            }
    		break;
    
    	case 20:
    		cout << "\nWho said or wrote, \" You are the light of the world \"?";
    		cout << "\n1. Moses"
    		     << "\n2. Paul"
    		     << "\n3. Jesus"
    		     << "\n4. John"
    		     << "\nAnswer: ";
    		cin >> Answer;
    		if(Answer[0] == '3')
    		{
    			cout << "\nGood Answer";
    			m += 1;
    		}
    		else
            {
                cout << "\nWrong Answer!";
    			Verify(20);
            }
    		break;
    
        case 21:
    	cout << "\nFor how long did the rain fall on the earth\n"
    	     << "while Noah and his family were in the ark he built?";
    	cout << "\n1. 30 days"
    	     << "\n2. 40 days"
    	     << "\n3. 50 days"
    	     << "\n4. 60 days"
    	     << "\nAnswer: ";
    	cin >> Answer;
    	if(Answer[0] == '2')
    	{
    		cout << "\nGood Answer";
    		cout << "\nRef: Ge 7:12";
    		m += 1;
    	}
    	else             
    	{
    	    cout << "\nWrong Answer!";
    	    Verify(20);
    	}
    	break;
        }
    
        cout << "\nPress Enter for next question...";
        getchar();
    
        return Answer[q];
    }
    //---------------------------------------------------------------------------
    void __fastcall Verify(int t)
    {
    	switch(t)
    	{
    	case 0:
    		cout << "\nLk 1:26-31";
            cout << "\nLuke gives the name of Jesus\' mother as Mary";
    		break;
    	case 1:
    		cout << "\nYou can get the right answer by counting the books";
    		break;
    	case 2:
    		cout << "\nYou can check the answer by opening the Bible";
    		break;
    	case 3:
    		cout << "\nRachel was Jacob\'s wife and gave birth to two sons";
            cout << "\nJoseph was born in Ge 30:22-24";
            cout << "\nBenjamin, was Rachel\'s second son";
    		break;
    	case 4:
    		cout << "\nYou can find the reference at Acts 5:1-11\n";
    		break;
    	case 5:
    		cout << "\nWhen on Earth, Jesus Christ had 12 apostles";
            cout << "\nYou can find a reference at Lk 6:13";
    		break;
    	case 6:
    		cout << "\nThe serpent was the craftiest animal";
            cout << "\nThe reference can be found at Ge 3:1";
    		break;
    	case 7:
    		cout << "\nPaul was promised the key to the kingdom of heaven";
            cout << "\nThis can be checked from Mt 16:19";
    		break;
    	case 8:
    		cout << "\nIn 1Tm 1:2, Paul addresses Timothy as \"My true son\"";
    		break;
    	case 9:
    		cout << "\nThe father of the 12 patriarchs was Jacob ";
            cout << "as indicated in Acts 7:8";
    		break;
    	case 10:
    		cout << "\nAccording to Ge 4:1, Cain was Adam\'s first son";
            cout << "\nAdam\'s second son was Abel, as found in Ge 4:2";
    		break;
    	case 11:
    		cout << "\nJames addressed his book to the 12 tribes";
            cout << "\nReference: James 1:1";
    		break;
    	case 12:
    		cout << "\nMicah made the young man his priest";
            cout << "\nReference: Judges 17:12";
    		break;
    	case 13:
    		cout << "\nPaul used to be called Saul";
            cout << "\nThe reference can be found at Acts 13:9";
    		break;
    	case 14:
    		cout << "\nIn the parable of the weed, the field"
                 << "represents the world";
    		cout << "\nRef: Mt 13:38";
    		break;
    	case 15:
            cout << "\nNoah was married: 2 people";
            cout << "\nNoah had 3 sons and each was married: 6 people";
            cout << "\n2 + 6 means there were 8 people in the arch.";
    		cout << "\nRef: Ge 7:7";
    		break;
    	case 16:
    		cout << "\nElizabeth was John The Baptiste mother";
            cout << "\nRef: Lk 1:36-37";
    		break;
    	case 17:
    		cout << "\nThis story is accounted in Judges 19";
            cout << "\nRef: Jg 19:29";
    		break;
    	case 18:
    		cout << "\nJesus said that in Mt 16:24";
    		break;
    	case 19:
    		cout << "\nAbraham lived 175 years and died";
            cout << "\nThis is indicated in Ge 25:7";
    		break;
    	case 20:
    		cout << "\nThis is quote from The Sermon on the Mount";
    		cout << "\nRef: Mt 5:14"; 
    	case 21:
    		cout << "\nwhile Noah and his family were in the ark he built\n"
                 << "the \"rain fell on the earth 40 days and 40 nights.";
            cout << "\nRef: Ge 7:12";
    		break;
    	}
    }
    //---------------------------------------------------------------------------
    
  7. To test the program, press F9.
  8. After testing the program, return to Bcb.
 

Previous Copyright © 2002 FunctionX Next