scheme scheme scheme scheme

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/02 11:57:44
scheme scheme scheme scheme

scheme scheme scheme scheme
scheme scheme scheme scheme

scheme scheme scheme scheme
(define-struct student (ID name score))
;contract:findTopper:list->number
;purpso:To find the 10 of the student who scored the highest ,given a instances of type student
;example:(findTopper (list (make-student 2324 "Seenu" 60) (make-student 5678 "Cherry" 100) (make-student 8901 "Micky" 40) (make-student 5839 "David" 30)
(define findTopper
(lambda (studentList)
(let traverseStudentList
((lengthList (length studentList))
(index 1 )
(currentTopper (list-ref studentList 0)))
(if (< index lengthList)
(if (> (student-score (list-ref studentList index )) (student-score currentTopper))
(begin
(set!currentTopper (list-ref studentList index))
(traverseStudentList lengthList (+ index 1) currentTopper))
(traverseStudentList lengthList (+ index 1) currentTopper))
(student-ID currentTopper)))))
(define-struct student (ID name score))
;contract:findTopper:list->number
;purpso:To find the 10 of the student who scored the highest ,given a instances of type student
;example:(findTopper (list (make-student 2324 "Seenu" 60) (make-student 5678 "Cherry" 100) (make-student 8901 "Micky" 40) (make-student 5839 "David" 30)))
(define findTopper
(lambda (studentList)
(if (and (list?studentList) (not (null?studentList))) (validateList studentList))
(let traverseStudentList
((lengthList (length studentList))
(index 1 )
(currentTopper (list-ref studentList 0)))
(if (< index lengthList)
(if (> (student-score (list-ref studentList index )) (student-score currentTopper))
(begin
(set!currentTopper (list-ref studentList index))
(traverseStudentList lengthList (+ index 1) currentTopper))
(traverseStudentList lengthList (+ index 1) currentTopper))
(student-ID currentTopper)))(display"Invalid Input")))
;contract:validateList:list->boolean
;purpose:To check if all the elements of list is of type student
;;example:(validateList (list (make-student 2324 "Seenu" 60) (make-student 5678 "Cherry" 100) (make-student 8901 "Micky" 40) (make-student 5839 "David" 30)))
(define validateList
(lambda (studentList)
(if (not (null?studentList))
(if (not (student?(car studentList)))
#f
(validateList (cdr studentList)))
#t)))