•

Check out our Community Blogs

Register and join over 40,000 other developers!

### Recent Blog Entries

• phi

I love this community !

• JackJames

hi i am jack i am seo expert jack james would love you to read new post

# Quiz simulation

c programming

This topic has been archived. This means that you cannot reply to this topic.
2 replies to this topic

### #1 negru

negru

CC Newcomer

• Member
• 17 posts

Posted 12 May 2016 - 12:27 PM

I need help with the following problem:

Define a quiz and add two questions in it with given possible answers. Display the question one by one and allow the user to choose between 1, 2 or 3 (numbers that represent serial numbers of possible answers). If the user enters the character which is not 1, 2 or 3, then allow the user to choose an answer again. At the end of the quiz, print the final score in percentage.

Note:  The total number of questions is dinamically allocated (not known in advance). The user can manipulate with offered answers to the given question, and with the menu that allows him whether he wants to add to the next question, displays the result, or if the user wants to terminate the program. All program is run using command prompt.

Use the following definitions:

```#define MAX 1000000

typedef struct
{
char questionText[MAX];
int snca;//serial number of the correct answer (1, 2 or 3)
}QUESTION;

typedef struct
{
int tnq;//total number of questions
QUESTION *questions;
}QUIZ;

void displayQuestion(QUIZ *qz,int snq);//prints question. 'snq' is the serial number of a question
int isCorrect(QUIZ *qz,int snq,int snqa);//checks if the chosen answer with the serial number 'snqa'
//on a question with the serial number 'snq' is correct
```
```Example program:

1. In what year was the C programming language created?

1. 1845
2. 1832
3. 1972

2. Who is the author of the C programming language?

1. Bill Gates
2. Dennis Ritchie
3. Steve Jobs

Error. Choose between 1, 2 or 3.

Final score: 100%
```

I don't understand a couple of thing in this problem:

1. How to add a question in the quiz, i.e. where to define the text of questions (text is not read, it is only displayed when the user chooses to add a new question)?
2. How to define the order of questions that the user is adding one by one?

Thanks for replies.

### #2 negru

negru

CC Newcomer

• Member
• 17 posts

Posted 18 May 2016 - 05:52 AM

Here is how I did it using singly linked list (I am the OP):

```#include <stdio.h>
#include <stdlib.h>
#define MAX 100000

typedef struct
{
char text[MAX];
char first[MAX],second[MAX],third[MAX];
int sn;//serial number of a question
int snca;//serial number of the correct answer
}QUESTION;

typedef struct list_node
{
QUESTION qn;
struct list_node *next;
}LIST_NODE;

{
LIST_NODE *newNode=(LIST_NODE *)malloc(sizeof(LIST_NODE));
newNode->qn=*qn;
{
}
else
{
LIST_NODE *p;
newNode->next=p->next;
p->next=newNode;
}
}

{
}

int main()
{
char option;
int sn;
int tnq=0;//total number of questions
int tncq=0;//total number of correct questions
float result;
QUESTION q1={"In what year was the C programming language created?","1852","1872","1972",1,3};
QUESTION q2={"Who is the author of C programming language?","Bill Gates","Dennis Ritchie","Steve Jobs",2,2};
QUESTION qn;

printf("Option 'A': Insert the first question.\n");
printf("Option 'B': Insert the second question.\n");
printf("\n");

do
{
printf("Choose an option: ");
scanf("%c",&option);
fflush(stdin);

if(option == 'A')
{
if(t1){
t1->qn=q1;
tnq++;}
else{
tnq++;}
}

else if(option == 'B')
{
if(t2){
t2->qn=q2;
tnq++;}
else{
tnq++;}
}

else if(option == 'P')
{
printf("Enter serial number of a question: ");
scanf("%d",&sn);
if(p)
{
printf("%d %s\n 1. %s\n 2. %s\n 3. %s\n",
p->qn.sn, p->qn.text, p->qn.first, p->qn.second, p->qn.third);

do
{
printf("Error. Possible answer is 1,2 or 3.\n");
}

printf("Answer to the question with serial number %d is correct.\n",sn);
tncq++;
fflush(stdin);
}
else{
printf("Answer to the question with serial number %d is not correct.\n",sn);
fflush(stdin);
}
}
else
{
printf("No data about the question with serial number %d.\n",sn);
fflush(stdin);
}
}

else if(option != '0')
{
printf("Unknown option.\n");
fflush(stdin);
}

}
while(option != '0');

result=((float)tncq * 100)/tnq;
printf("Result: %.2f%%",result);

return 0;
}```

How to implement this program using arrays (as given in the original problem)?

Could someone modify it?

AceInfinity