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

Homework 2 (Due Monday 20 June 2548)

1. Write a program, grade?, to determine grade from final scores using the following table. Solution.

A

> 85

B

> 73

C

> 62

D

> 50

F

50


    
;----------------------------------------------------------------------------
; @description determine grade from final scores
; @param x final scores
; @return grade
; @contract grade? : number -> symbol
; @example (grade? 90) = 'A
; @example (grade? 85) = 'B
; @example (grade? 80) = 'B
; @example (grade? 73) = 'C
; @example (grade? 65) = 'C
; @example (grade? 62) = 'D
; @example (grade? 54) = 'D
; @example (grade? 50) = 'F
; @example (grade? 35) = 'F
;----------------------------------------------------------------------------
(define (grade? x)
  (cond
    [(> x 85) 'A]
    [(> x 73) 'B]
    [(> x 62) 'C]
    [(> x 50) 'D]
    [else 'F]))

;------
; Test
;------
"(grade? 90) = " (grade? 90)
"(grade? 85) = " (grade? 85)
"(grade? 80) = " (grade? 80)
"(grade? 73) = " (grade? 73)
"(grade? 65) = " (grade? 65)
"(grade? 62) = " (grade? 62)
"(grade? 54) = " (grade? 54)
"(grade? 50) = " (grade? 50)
"(grade? 35) = " (grade? 35)


2. Write a program, normalBodyTemp?, to check whether our body temperature is normal (36.1 - 37.8 °C). Solution.

;----------------------------------------------------------------------------
; @description check whether our body temperature is normal (36.1 - 37.8 Celsius)
; @param temp our body temperature
; @return true if 36.1 <= temp <= 37.8, otherwise false
; @contract normalBodyTemp? : number -> boolean
; @example (normalBodyTemp? 36.0) = false
; @example (normalBodyTemp? 36.1) = true
; @example (normalBodyTemp? 37.0) = true
; @example (normalBodyTemp? 37.8) = true
; @example (normalBodyTemp? 38.0) = false
;----------------------------------------------------------------------------
(define (normalBodyTemp? temp)
  (cond
    [(< temp 36.1) false]
    [(and (<= 36.1 temp) (<= temp 37.8)) true]
    [else false]))

;------
; Test
;------
"(normalBodyTemp? 36.0) = " (normalBodyTemp? 36.0)
"(normalBodyTemp? 36.1) = " (normalBodyTemp? 36.1)
"(normalBodyTemp? 37.0) = " (normalBodyTemp? 37.0)
"(normalBodyTemp? 37.8) = " (normalBodyTemp? 37.8)
"(normalBodyTemp? 38.0) = " (normalBodyTemp? 38.0)