Я пытаюсь написать калькулятор GPA на языке схемы. Единственная часть, с которой, как мне кажется, у меня проблемы, - это часть, в которой мне нужно преобразовать буквы в целые числа в списке. Я использую eq? в приведенном ниже коде, потому что в одном из своих примеров наш профессор использовал eq? преобразовать букву в целое число.
(define creditSum
(lambda (lst)
(if (or (not (list? lst)) (empty? lst))
0
(+ (car lst) (creditSum (cdr lst))))))
(define (gpa lst x)
(cond
((eq? x "A") 4.0)
((eq? x "B") 3.0)
((eq? x "C") 2.0)
((eq? x "D") 1.0)
((eq? x "F") 0.0)
(/ (creditSum x) (length x))))
Я хочу присвоить число каждой букве и использовать эти буквы, чтобы получить вывод в виде целого или десятичного числа. Например, если я ввожу: (gpa '(A B A B)), мой вывод должен быть 3,5.
(eq? "a" "a")
не обязательно верно. Вместо этого вам нужно использовать equal?< /а>. - person Joshua Taylor   schedule 01.07.2015(eq? x "D")
вы сравниваете строку и значение переменнойx
. Когда вы пишете'(A B A B)
, у вас есть список символов (не строк!), поэтому значениеx
будет символом. Ни один символ не будет равен строке. - person Joshua Taylor   schedule 01.07.2015