Copyright © 2005 Suradet Jitprapaikulsarn
สงวนลิขสิทธิ์ 2548 สุรเดช จิตประไพกุลศาล

Homework 5 (Due Monday July 11, 2005)

  1. Write the function, sumPositive, to calculate the sum of all positive numbers in the list of numbers. Solution.
;------------------------------------------------------------------------------
; @description calculate the sum of all positive numbers in a list-of-number
; @param L a list of number
; @return the sum of all positive numbers in L
; @contract sumPositive: LON -> number
; @example (sumPositive empty) = 0
; @example (sumPositive list-1) = 0
; @example (sumPositive list-2) = 5
; @example (sumPositive list-3) = 12
;------------------------------------------------------------------------------
(define (sumPositive L)
  (cond
    [(empty? L) 0]
    [else (cond
            [(> (LON-first L) 0) (+ (LON-first L) (sumPositive (LON-rest L))) ]
            [else (sumPositive (LON-rest L)) ] ) ] ) )

;------
; Test
;------
"(sumPositive empty) = " (sumPositive empty)
"(sumPositive list-1) = " (sumPositive list-1)
"(sumPositive list-2) = " (sumPositive list-2)
"(sumPositive list-3) = " (sumPositive list-3)
  1. Write the function, sumSquare, to calculate the sum of the square of each number in the list of numbers.
;------------------------------------------------------------------------------
; @description calculate the sum of the square of each number in a list-of-number
; @param L a list of number
; @return the sum of the square of each number in L
; @contract sumSquare: LON -> number
; @example (sumSquare empty) = 0
; @example (sumSquare list-1) = 9
; @example (sumSquare list-2) = 25
; @example (sumSquare list-3) = 155
;------------------------------------------------------------------------------
(define (sumSquare L)
  (cond
    [(empty? L) 0]
    [else (+ (* (LON-first L)
                (LON-first L))
             (sumSquare (LON-rest L))) ]))

;------
; Test
;------
"(sumSquare empty) = " (sumSquare empty)
"(sumSquare list-1) = " (sumSquare list-1)
"(sumSquare list-2) = " (sumSquare list-2)
"(sumSquare list-3) = " (sumSquare list-3)