Due: 28 September by 11:00 pm
Weight: This assignment is worth 4% of your final grade.
Purpose, Skills, & Knowledge: The purposes of this assignment are:
- To practice using conditional statements while writing functions in R.
- To practice the skill of writing and using test functions to understand the problem.
- To practice computational problem solving.
Assessment: Each question indicates the % of the assignment grade, summing to 100%. The credit for each question will be assigned as follows:
- 0% for not attempting a response.
- 50% for attempting the question but with major errors.
- 75% for attempting the question but with minor errors.
- 100% for correctly answering the question.
Rules:
- Problems marked SOLO may not be worked on with other classmates, though you may consult instructors for help.
- For problems marked COLLABORATIVE, you may work in groups of up to 3 students who are in this course this semester. You may not split up the work – everyone must work on every problem. And you may not simply copy any code but rather truly work together.
- Even though you work collaboratively, you still must submit your own solutions.
Download and use this template for your assignment. Inside the “hw4” folder, open and edit the R script called “hw4.R” and fill out your name, GW Net ID, and the names of anyone you worked with on this assignment.
Writing test functions
For each of the following functions, write a test function first, and then write the function. Your test functions will count for half of the available credit for each problem. Think carefully about the test cases to include in your test functions.
guessAnimal(hasFourLegs, climbsTrees)
[SOLO, 15%]Write the function guessAnimal(hasFourLegs, climbsTrees)
that returns a statement guessing an animal based on whether it has four legs and whether it climbs trees. Here is the expected behavior:
hasFourLegs |
climbsTrees |
statement |
---|---|---|
TRUE |
TRUE |
“It’s probably a cat” |
TRUE |
FALSE |
“It’s probably a dog” |
FALSE |
TRUE |
“It’s probably a snake” |
FALSE |
FALSE |
“Hmm, I’m not sure” |
isPositiveMultipleOf4Or7(n)
[SOLO, 15%]Write the function isPositiveMultipleOf4Or7(n)
that returns TRUE
if n
is a positive multiple of 4 or 7 and FALSE
otherwise. Note than n
could be any data type.
isEvenPositiveInt(x)
[COLLABORATIVE, 20%]Given an arbitrary value x
, return TRUE
if it is an integer, and it is positive, and it is even (all 3 must be true), or FALSE
otherwise. If the value x
is not an integer, the function should return FALSE
rather than error. So, isEvenPositiveInt("yikes!")
returns FALSE
, and isEvenPositiveInt(123456)
returns TRUE
.
isLeapYear(year)
[SOLO, 20%]Write the function isLeapYear(year)
that returns TRUE
if year
is a leap year and FALSE
otherwise. Assume that year
is a positive integer.
getTheCents(n)
[COLLABORATIVE, 20%]Write the function getTheCents(n)
which takes a value n
that represents a payment in US dollars and returns the number of cents in the payment. For example, if n
is 2.45
, the function should return 45
. If n
is an integer, the function should return 0
, as it has 0
cents; if it isn’t a number, it should return NULL
, because a non-number payment make no cents (ha!). If the payment has partial cents (for example, 3.953
), it should be rounded to the nearest cent (in this case, 95
cents).
Create a zip file of all the files in your R project folder for this assignment and submit the zip file on Blackboard (note: to receive full credit, your submission must follow the above format of using a correctly-named R Project and .R
script).