CISC 181 Project 1
Elementry School Math Program
Computers are being used more and more in an educational setting. In this project, you will
write a computer program that will help tutor elementry school students in basic math
skills. The program will allow the student to choose a variety of problem types and adjust
the difficulty of the presented problems depending on how well the student is doing (The GRE and the GMAT do something very similar!)
1. The Opening Messages
The program will present the user with "tests" consisting of a set of 10 problems at
a time. When the program is just entered, an introductory message should be printed along with the kind of problem the user wants to study. The user should have the option of choosing
1 for addition problems only
2 for subtraction problems only
3 for multiplication problems only
4 for division problems only
5 for a mix of problems
Once the problem type has been selected, the user should be asked for a desired
difficulty level from 1 for beginners, to 10 for advanced users.
2. Presenting the Problems
The program should then ask the student 10 questions of the same type and difficulty level. The difficulty level specifies the range of numbers that are in the problems. Difficulty level of 1 will give numbers from 1-10, 2 from 1-20, etc, through 10, which is 1-100.
You should use the rand() function to generate a random number between the users range. For menu choice 5, you should also use rand to find the type of problem, as well.
The system should then read the answer given by the student. If the answer is correct, a message should be printed and the program should go on to the next problem. If the answer is incorrect, the system should print a different kind of message, and the user should be another try. If the answer is incorrect again, the user should be given a third and final try.
You want the students to remain as interested as possible, so the messages should be varied. Use a random number generator to generate the message. Here are the responses you should include in the program:
- Very good!
- Nice work!
- Excellent!
- Great job!
Responses to incorrect answers:
- No, please try again
- Wrong, try again.
- No, keep trying!
- Sorry, try again.
At the end of each 10 question test, you should tell each student their score, both for that test and overall score.
Each score should consist of the number of correct answers divided by the number of attempts. For example:
You scored 8 of 14 on this test, or 57% for this test. Overall, you are 19 for 38, or 50%.
3. Keeping track of difficulty levels
Because students are not always good judges of their capability, the system should monitor
their progress and adjust the problems according to the students ability. The system should track the students progress. After each 10 After the student finishes a 10 question test, their score for that test, and overall score should be shown.
- If their score is 90% or above, the student should be asked if they would like to increase the difficulty level on the next round. If they say yes, the system should automatically increase the difficulty level by 1, but not past the highest level of 10.
- If the students score is between 70-90%, the level is probably good for them. Prompt the student if they would like to try more problems of the same type, a different type, or exit the system.
- If the students score is below 70%, then they are having difficulty. In this case the system should ask the user if they want to play again. but their difficulty level should be lowered. If they are at the lowest level already, the system should ask them to see the teacher for additional help. These students should also be given the option of choosing a different problem type and quitting the system.
Hints:
- Before you start writing code, sit down and decide how your want to tackle the problem. Break the program up into parts.
- A lot of this program is going to involve doing things more than once - for example, displaying menus, taking user inputs, etc. Turn as many of these into functions are possible! Your goal should be to make your main() as small as possible.
- There are many correct ways to do things - so be creative, and have fun!
Grading:
- Correct Program Operation: 65%
- Test runs: 10%
- Following Good Coding Standards / Program structure: 25%
- Extra Credit: up to 8% - Add something unique to the program not mentioned
here. Please clearly mark this on the printout when submitting it to the TA. Extra credit will be based on difficulty and creativeness.
What to hand in:
- A listing of the program with appropriate comments and formatting.
- Several runs of the program, showing ALL of the programs features. This may take
several runs. That is fine.
- Email me (not the TA) your .cc file, named <your last name>-pj1.cc
Other Important Information:
- I hate to waste time even writing this, but all your work on the projects
MUST BE YOUR OWN. Specifically, you are NOT allowed to
work with another student, share or discuss solutions, or copy code from another student. Failure to adhere to this rule with be dealt with per University plagarism policies. Further, if you cheat on this project, the odds of you doing well on the test, and future CIS courses, are slim. Please do you own work.