Схема больше средней функции - PullRequest
0 голосов
/ 27 ноября 2018

Я делаю программу на Scheme (просто схема в Dr. Racket), которая принимает число целых чисел, за которыми следуют целочисленные значения.Мне нужно уметь находить среднее значение по списку, с которым я уже работал, и иметь возможность подсчитывать числа, превышающие среднее, и отображать их количество.

;;Function for the sum of list
(define (sum listlen) 
  (if
    (null? listlen)
    0
    (+ (car listlen) (sum (cdr listlen)))
  )
)






;;This is the part I am having trouble with
(let ((avg  (/ (apply + (cdr numbers)) (car numbers))))
  (count (lambda (x) (< x avg)) (cdr numbers)))

Моя функция нахождения функции больше среднего дает мне несоответствие арности.он говорит: «подсчет: несоответствие арности; ожидаемое число аргументов не совпадает с ожидаемым числом: 1 дано: 2 аргумента ...:»

Я уверен, что это что-то простое, что я делаю неправильно, если мойбольше, чем в среднем функция, но для жизни я не могу понять, что это такое

1 Ответ

0 голосов
/ 27 ноября 2018
;;Function for the sum of list
(define (sum listlen) 
  (if
    (null? listlen)
    0
    (+ (car listlen) (sum (cdr listlen)))
  )
)

Это на самом деле просто (define (sum lst) (apply + lst)).

Далее

(< x avg)

Должно ли это быть (> x avg) (для подсчета чисел, превышающих среднее)?

Наконец, http://docs.racket-lang.org/manual@simply-scheme/index.html говорит для count:

Возвращает количество букв вслово или количество слов в предложении.

Вы имели в виду что-то вроде (length (filter (lambda (x) (> x avg)) (cdr numbers)))?(Может быть сделано также с reduce, или с именем let, или любым другим.)

...