The lab is done in groups of 2 or 3. In the beginning of each file please write (in comments) the names fo all group members.
At the end of the lab please send me and your group partner(s) all your Racket files as e-mail attachments. My e-mail is elenam at morris.umn.edu. The subject of your e-mail must be "1301 Lab 6" followed by "Final" or "Not final", depending on whether this is a final submission or you are still working on it. If you need to finish it, make sure to set up a time with your group partner(s) to finish the lab.
These problems use recursion. Use the examples we did in class as sample
code. All functions must have signatures, descriptions, and
check-expects (add check-expects as needed).
Note that list
function (used in check-expects below)
is an easy way to create a list of several
elements without having to repeat cons
many times.
As an example of how it works, (list 2 3)
creates
a list (cons 2 (cons 3 empty))
.
product
that consumes a list of numbers and returns their product. It returns 1 for an empty list.
(check-expect (product (list 2 3 -1)) -6)
(check-expect (product (list 4 6 0 8)) 0)
(check-expect (product empty) 1)
Question 2 (4 points)
Write a function sum-non-negative
that adds up all non-negative
numbers in a list.
(check-expect (sum-non-negative (list -2 3 0 -1 5)) 8)
(check-expect (sum-non-negative (list 4 8)) 12)
(check-expect (sum-non-negative (list -1 -2)) 0)
Question 3 (4 points) Write a function count-odd
that consumes a list of numbers and returns the number of odd numbers in the list.
(check-expect (count-odds (list 2 3 1 5 0)) 3)
(check-expect (count-odds (list 4 6 8)) 0)
(check-expect (count-odds empty) 0)
Question 4 (4 points) Write a function sum-x-coords
that consumes a list of positions and returns the sum of their x coordinates.
(check-expect (sum-x-coords (list (make-posn 10 20) (make-posn 20 50))) 30)
(check-expect (sum-x-coords (list (make-posn 10 -20) (make-posn 10 0))) 20)
(check-expect (sum-x-coords empty) 0)
Question 5 (4 points) Write a function first-odd
that consumes a list of numbers and returns the first odd number. Use the predefined function odd?
to determine if a number is odd. If no number in the list is odd, return #false.
(check-expect (first-odd (list 2 3 1 5 0)) 3)
(check-expect (first-odd (list 4 6 8)) #false)
(check-expect (first-odd empty) #false)