# Difference between revisions of "ManyMultipleChoice1"

## A List of Many Multiple Choice Questions with Common Answers

This PG code shows how to construct a list of many multiple choice questions that share common answers.

PG problem file Explanation

Problem tagging:

```DOCUMENT();

"PGstandard.pl",
"MathObjects.pl",
"PGchoicemacros.pl",
);

TEXT(beginproblem());
```

Initialization: We use `PGchoicemacros.pl` to construct the list of multiple choice items, and the custom problem grader fluid from `PGgraders.pl` for incremental grading.

```Context("Numeric");

# Create and use pop up lists
\$tf = new_select_list();
\$tf->rf_print_q(~~&pop_up_list_print_q);

# Choices presented to students
\$tf->ra_pop_up_list( [
"True"  => "True",
"False" => "False",
]);

\$tf -> qa (
"All continuous functions are differentiable.",
"False",
"All differentiable functions are continuous.",
"True",
"All polynomials are differentiable.",
"True",
"All functions with positive derivatives are increasing.",
"True",
"All rational functions are continuous.",
"False",
"All exponential functions are differentiable.",
"True",
"All exponential functions are rational functions.",
"False",
);

# How many questions to use
\$tf->choose(6);
```

Setup: We can choose how many of the questions will be presented to students.

```Context()->texStrings;
BEGIN_TEXT
Are the following statements true or false?
\$BR
\{ \$tf -> print_q() \}
END_TEXT
Context()->normalStrings;
```

Main Text:

```\$showPartialCorrectAnswers = 0;

#
#
\$ENV{'grader_message'} = "You can earn " .
"30% partial credit for 2 - 3 correct answers, and " .
"60% partial credit for 4 - 5 correct answers.";

#
#

ANS( str_cmp( \$tf->ra_correct_ans() ) );
```

Answer Evaluation: We must withhold feedback from students by setting `\$showPartialCorrectAnswers = 0;` We use an incremental grader called `custom_problem_grader_fluid`. With this problem grader, you must specify the number of correct answers `[2,4,6]` and their corresponding scores `[0.3,0.6,1]` and update the grader message accordingly. The last entry in the array for `grader_numright` must be the total number of questions asked, and the last entry in the array for `grader_scores` must be 1 (otherwise nobody can earn full credit!).

If you want a grader that awards full credit when all questions are correct and no credit otherwise, uncomment the standard problem grader.

```Context()->texStrings;
BEGIN_SOLUTION
\${PAR}SOLUTION:\${PAR}
You could put an explanation here.
END_SOLUTION
Context()->normalStrings;

COMMENT("MathObject version.");

ENDDOCUMENT();
```

Solution:
A method to match explanations with a shuffled list of matching problems is presented in Matching Problems