Я начинаю Ракет, и (будучи новичком) у меня возникают проблемы с выяснением, что именно не так с моим кодом.Сначала я попытался реализовать это как одну функцию, и она работала нормально:
; Finds surface area of pipe
; outside surface area (2pir+thickness)*length
; inside SA 2pirad*length
; 2 (area of outer circle - area of inner circle)
; add all together
(define (area-pipe inner_radius height thickness)
(+ (* 2 pi inner_radius height)
(* 2 pi height (+ inner_radius thickness))
(- (* 2 pi (sqr (+ inner_radius thickness)))
(* 2 pi (sqr inner_radius)))))
И (так как я следую учебным пособиям здесь ), я решил:реализовать это как комбинацию функций, в результате чего я получил следующее:
; functional implementation
(define (area-circle radius)
(* 2 pi (sqr radius)))
(define (area-cylinder radius height)
(* 2 pi (sqr radius) height))
;actual function--why doesn't this quite work as planned?
(define (area-pipe1 inner_radius height thickness)
(+ (area-cylinder inner_radius height)
(area-cylinder (+ inner_radius thickness) height)
(- (area-circle (+ inner_radius thickness))
(area-circle inner_radius))))
Итак, я предполагаю , что есть проблема с моими определениями.Тем не менее, я был бы признателен за некоторые советы и подсказки, почему я не получаю правильные ответы.В качестве тестов сайт предоставляет следующий код:
(test (area-pipe1 0.5 0 0.5) 4.71)
(test (area-pipe1 0 2 1) 18.85)
(test (area-pipe1 1 2 1) 56.54)