Introduction to Computer Science I by James Tam Return to the course web page

CPSC 231: Assignment 4 (Worth 3%) Due Friday May 28

 

New Concepts to be applied for the assignment

  1. Program documentation
  2. Formulas
  3. Decision making constructs
  4. Loops

Writing a lucky number generator

Some people believe that there are some specific numbers that provide them more luck than other numbers.  We all have heard of people who pick the same lottery numbers every week because they believe that these numbers will provide them with a higher probability of winning.  For this assignment you are to write a program that will ask the user a series of questions and generate for the person their very own "lucky number".1

Your program will ask the user four questions:

1) The person's age

2) The person's favourite primary color

3) The person's gender

4) The person's current level of education

1) Age

This value must be a positive integer between 1 and 113 (inclusive).  This value will stored as-is in an integer variable and is used to determine the modifier resulting from the person's age.

 

2) Favourite primary color

The person will be able to pick their favourite of the following three colors: red, blue or green

Color

Color modifier

Red 15
Blue 20
Green 10

 

3) Gender

The person must indicate if they are a male or female.

Gender

Gender modifier

Male 73
Female 79

 

4) Current level of education

For this question the program will ask the person to indicate the level of education that the person currently enrolled in or the highest level that has been completed (if the person is not currently a student).

Level of education

Education modifier

High school

12

Undergraduate post-secondary

16

Graduate: Masters program

18

Graduate: Doctoral program

21

The lucky number generator will perform a calculation that is based on the answers to these four questions:

    Lucky number = The remainder of (age modifier x gender modifier) modulo (color modifier x education modifier)

 

An example calculation is shown below:

 

Grading

Assignments that receive a "C"

These assignments implement all of the required functionality listed above.  Assignment submissions must follow also follow good coding style and must be fully documented.  

 

Assignments that receive a "B"

These assignments fulfill all of the requirements for a "C" level submission and performs some rudimentary error checking:

  1. Age must be an integer value between 1 and 113 years (inclusive).  If a value is given outside of this range then the program will set the age modifier to 27 and indicate to the user of the program that this is the value to be used in the calculation.
  1. The favourite primary color chosen must be of the following:

If a character other than 'r', 'b' or 'g' is entered then the program will indicate that it will choose red as the favourite color to red and set the color modifier to 15.

  1. Gender must either be male (m) or female (f).  If another value is entered then the program will indicate that it will assume that the gender is male and set the gender modifier to 73.
  1. The level of education must fall into one of the following categories:

If another value is given for the level of education then the program will indicate that it assumes that the person has an undergraduate level of education and the education modifier will be set to 16.

It is however not expected that your program can determine if the type of data that was entered is correct  e.g., at this point it's acceptable if your program crashes if the person enters a character instead of an integer.  While some of the better commercial programs do deal with issues like this, at this point it would be far too difficult to require you to implement a solution for this problem.     

 

Assignments that receive an "A"

These assignments fulfill all of the requirements for "B" level submission and also the user doesn't have to rerun the program in order to generate another lucky number.  Each time that a calculation has been performed the program will prompt the user if he or she wishes to run the program again or if they want to exit the program.

 

Other submission requirements

In addition to having fulfill the generic assignment requirements the requirements specific to this assignment include:

1. Good coding style and documentation:  They will play a role in determining your final grade for this assignment.  Your grade can be reduced by a letter step (e.g., "A" to "A-" for poor programming style such as employing poor naming conventions for identifiers, insufficient documentation or the use of global variables).

2. Include a README file in your submission:  For this assignment your README file must indicate what grade level has been completed (A, B or C).  This will allow your marker to quickly determine what he or she must look for and speed up the marking process.

3. Assignments (source code and the README file) must be electronically submitted via submit.  In addition a paper print out of the source code must be handed into the assignment drop box for the lab that you are registered in (located on the second floor of the Math Sciences building).  Electronically submitting the assignment allows your marker to run the code in order to quickly determine what features were implemented.  Providing a paper printout makes it easier for your marker to read and flip through your source code.

 

Sample Executable

You can run a sample executable called "Lucky" which can be found in Unix in the directory: /home/231/assignments/assignment4

1 Note: The Lucky Generator program is to be used for entertainment purposes only and neither I nor the University of Calgary provides any express or implicit guarantees that the numbers generated will provide you with greater financial profit or personal gain.