PA 3.1: Adaptive quiz
- Due Mar 16, 2021 by 11:59pm
- Points 10
- Submitting a file upload
- File Types cpp
- Available after Mar 2, 2021 at 2pm
When completing this programming assignment, you may work with up to one other person. No groups of more than two are permitted.
In this programming assignment, you will create an adaptive quiz with five questions, each with versions of various difficulties (it will ask the same question, but might ask in a different way or provide some options). The program should start off asking a question of medium difficulty. If the user answers correctly, they will get a the difficult version of the second question; if they answer incorrectly, they will get the low difficulty version of the second question. For the remaining three questions, the user will see a:
- high difficulty question if they answered the previous question correctly and it was of medium or high difficulty
- medium difficulty question if they answered the previous question correctly and it was of low difficulty OR they answered it incorrectly and it was of high difficulty
- low difficulty question if they answered the previous question incorrectly and it was of low or medium difficulty
Here's a diagram showing the flow of the progression; the green and red lines represent the path through the program when the user provides correct and incorrect answers, respectively.
The program should track how many low, medium, and high difficulty questions the user answered correctly and then display the score at the end using this formula:
score = 0.5 x low + medium + 2 x high
Your questions should incorporate a variety of input formats, including at least one that requires each of: free text (i.e. a string that might include spaces), multiple choice (ex: a, b, c or 1, 2, 3), and numeric (e.g., a year or result of a math formula).
You have the freedom to choose the theme of your quiz (sports trivia, math problems, Kardashians trivia, whatever) and to define what low, medium, and high difficulty means. Be creative!
Copy the following header and specifications checklist and paste it at the top of your source code. As you complete the specifications, fill in the [ ] next to that specification in the check list (e.g., like this: [x]). I will not grade submissions with missing specifications; please do not submit if you cannot check all of them off. This specs checklist is essentially a way for you to self grade before you submit your program.
// Name:
// Date:
// Partner:
//
// Specifications checklist for PA Option 3.1
//
// General specs:
// [ ] the header includes your name and anyone you worked with
// [ ] the header includes this specifications checklist with all completed
// specifications checked off: [x]
// [ ] the code is indented properly (inside of every block, code is indented
// one more tab)
// [ ] each chunk of code that "hangs together" (works toward a higher level goal):
// [ ] includes a brief, useful comment above it
// [ ] is separated from the next chunk by a blank line
// [ ] there are no really long lines of code or comments (if you have long
// lines, split them across multiple shorter lines)
// [ ] identifiers are well named
// [ ] the program compiles
// [ ] the program runs without crashing or hanging
// [ ] all output and prompts look clean (correct spelling, capitalization,
// nothing squished)
// [ ] all prompts make it clear what data the user is expected to enter and in
// what format and work as expected
//
// Specific specs:
// [ ] your program prompts the user with 5 questions:
// [ ] at least one question is multiple choice
// [ ] at least one question is a fill in the blank (the user enters a word or phrase to complete a sentence)
// [ ] at least one question requires a numeric response (e.g., a year, the result of a math problem, etc.) and is treated as such by your program
// [ ] the first question is medium difficulty
// [ ] the second question has two difficulty levels: low and high
// [ ] these follow the same rules outlined below for questions 3-5
// [ ] each of the remaining three questions has three levels: low, medium, and high difficulty
// [ ] the low difficult version is displayed when the user answered the previous question
// incorrectly and it was of low or medium difficulty
// [ ] the medium difficulty version is displayed when the user answered the previous question
// incorrectly and it was of high difficulty OR the user answered correctly and it was of
// low difficulty
// [ ] the high difficult version is displayed when the user answered the previous question
// correctly and was of either medium or high difficulty
// [ ] your program tracks how many low, medium, and high difficult questions were answered correctly
// [ ] your program produces an accurate score at the end
// (0.5 x # low difficulty questions answered correctly +
// # medium difficulty questions answered correctly +
// 2.0 x # high difficulty questions answered correctly)
Here are the expected scores for several combinations of easy and difficult questions answered correctly (this is not exhaustive):
# Low difficulty questions correctly answered (max is 4) |
# Medium difficulty questions correctly answered (max is 5) |
# High difficulty questions correctly answered (max is 4) | Score (0–9) |
0 | 0 | 0 | 0 |
1 | 1 | 1 | 3 |
2 | 1 | 2 | 6 |
4 | 0 | 1 | 4 |
3 | 0 | 0 | 1.5 |
0 | 1 | 4 | 9 |
If you are working with a partner, both of you must submit individually.