Homework 2:
Basic Functions in Racket
Due: Monday, February 3, at 11:59 PM
Introduction
This assignment gives you a chance to write Racket expressions that will be the body of a function.
Template Source File
Download
this template file
and use it as the starting point for your submission. Please name
the file homework02.rkt
!
homework02.rkt
includes a require
expression at the top. It imports the rackunit
module so that we can define unit tests to check our solutions [
example code
]. The template file contains several test cases for each
problem.
Do Not Use...
You do not need any advanced Racket features to solve these problems, only simple expressions.
-
Do not use a
let
expression in any function. -
Do not use an internal
define
in any function.
Helpful Functions
You may find these Racket primitives useful on this assignment:
You may want to use each for at least one problem.
To cause a number to evaluate as a floating-point number, you can make one of the arguments floating-point. In Problem 1, dividing by 180.0 instead of 180 will cause Racket to return a floating-point number.
Problems
-
Write a Racket function named
quiz-percentage
that takes exactly three integer arguments. Each argument will be in the range 0 .. 60.quiz-percentage
returns the percentage of the points earned. For example:> (quiz-percentage 40 20 30) ; average is 50% -- 90/180 0.5 > (quiz-percentage 60 50 40) ; average is 150/180, or 0.83... 0.8333333333333334 > (quiz-percentage 60 60 60) ; perfect score: 100%! 1.0
I have providedcheck-=
expressions for these three examples in your template file. -
I buy soda in 12-packs of 12-ounce cans or 6-packs of 24-ounce
bottles. Sometimes, stores sell 6-packs of 16.9-ounce
bottles and charge the price usually associated with the larger
24-ounce bottles. I am not amused by this marketing strategy.
I need a function that helps me compare prices by the ounce.
Write a Racket function namedprice-per-ounce
that takes three arguments: the number of units (bottles or cans) in the pack, the size of each unit in ounces, and the price for a pack.price-per-ounce
returns the price of the pack per ounce. For example:> (price-per-ounce 6 24 1.44) ; a 6-pack of 24-ounce bottles costs $1.44 0.01 ; ... which is $0.01/ounce = $1.44/(6 * 24) > (price-per-ounce 6 16.9 1.44) ; shrinkflation! 0.01420118 ; ... which is $1.44/(6 * 16.9)
I have providedcheck-=
expressions for these two examples in your template file. -
Write a Racket function namedladder-height
that takes two arguments, the length of the ladder and the distance at the base. Both are in feet. The function returns the distance up the wall reached by the ladder, also in feet. For example:> (ladder-height 10 6) 8 > (ladder-height 13 5) 12 > (ladder-height 20 3.5) ; that's steep... be careful!! 19.691368667515217
You may want to write a function to compute the area of a circle and use it to compute ring's area.
I have providedcheck-=
expressions for these three examples in your template file. -
According to
The Joy of Cooking,
when you are cooking candy syrups, you should cook them 1 degree
cooler than listed in the recipe for every 500 feet of elevation
you are above sea level. For example, the recipe for Chocolate
Carmels calls for a temperature of 244° Fahrenheit. If you
were making your Chocolate Carmels in Denver, the Mile-High
City, you would want to cook the syrup at 233.44°.
Write a Racket function namedcandy-temperature
that takes two arguments, the recipe's temperature in degrees Fahrenheit and the elevation in feet, and returns the temperature to use at that elevation. For example:> (candy-temperature 244 5280) ;; Denver, the Mile-High City 233.44 > (candy-temperature 302 977.69) ;; the highest point in Cedar Falls 300.04462 ;; is approx. 298m above sea level > (candy-temperature 302 -1401) ;; the Dead Sea, 1401 ft below sea level 304.802
I have providedcheck-=
expressions for these three examples in your template file. -
Generally, the dimensions of engineered components are
not exactly the specified value, but rather within a certain
tolerance of the specified value. The tolerance generally
depends upon the application and the material being used.
For example, a metal piece used in construction that is listed
as 5 cm in length might actually be any length within 1 mm of
5 cm, that is, between 4.9 cm and 5.1 cm, inclusive.
Write a Racket function namedin-range?
that takes three numbers as arguments: two numbers to compare, and a tolerance,epsilon
.in-range?
returns true if its first two arguments are withinepsilon
of one another, and false otherwise. For example:> (in-range? 4.95 5.0 0.1) #t > (in-range? 4.95 5.0 0.01) ;; not anymore! #f > (in-range? 5.0 4.95 0.1) ;; works both ways #t > (in-range? 5.0 5.95 0.1) #f > (in-range? 5.5 5.95 0.5) #t
I have providedcheck-true
andcheck-false
expressions for all of these examples in your template file.
Deliverables
Use Save Definitions to save the file of function
definitions you create using the template you downloaded.
It will have the file extension rkt
. Be sure to use
the specified name for your file! This enables the auto-grader
to find and run your code.
By the due time and date, use the course submission system to submit the following files electronically:
-
homework02.rkt
, your file of function definitions
No hard copy is required.
Be sure that your submission follows the submission requirements.