计算方案中2个三角形体积之间的差异

时间:2016-04-06 03:54:11

标签: scheme racket

我需要在方案中创建一个函数,这个函数允许我使用我已经创建的函数计算两个三角形体积之间的差异来计算三角形的体积。这就是我所拥有的。我无法使diffVol功能起作用。

(define (triArea base height)
 (*
  (/ base 2) height
 ) 
)

(define (triVol base height depth)
  (*
   (triArea base height) depth
  )
 )

(define diffVol
  (let
      ( (volume1 triVol))
    (let
       ( (volume2 triVol))
         (- volume1 volume2)
       )
   )
 )

2 个答案:

答案 0 :(得分:1)

当您指定volume1volume2时,您没有将triVol应用于任何参数

此外,diffVol需要参数,如果它将是一个可重用的函数

你可以通过以下两种方式之一做到这一点。

A) diffVol需要两卷

(define (diff-volume a b)
  (- a b))

(diff-volume (triVol 4 5 6) (triVol 7 8 9)) ;=> -192

B) diffVol可以获取两个独立三角形的尺寸,然后计算差异

(define (diff-volume base1 height1 depth1 base2 height2 depth2)
  (- (triVol base1 height1 depth1)
     (triVol base2 height2 depth2)))

(diff-volume 4 5 6 7 8 9) ;=> - 192

解决方案A是一个更好的解决方案。解决方案B需要太多参数,你可能会忘记他们进入的顺序。

<强>说明

命名: Scheme / Racket不使用camelCase。它们使用小写名称和连字符分隔单词/术语。谓词程序应以?结尾。

缩进: Scheme / Racket对如何缩进事物有很强烈的意见。看起来你正试图让你的方案看起来像你曾经使用过的语言。

以下是对命名/缩进

的一些一般性改进
(define (tri-area base height)
 (* (/ base 2) height))

(define (tri-vol base height depth)
  (* (tri-area base height) depth))

(define (diff-volume a b)
  (- a b))

(diff-volume (tri-vol 4 5 6)
             (tri-vol 7 8 9))

答案 1 :(得分:0)

这就是我想出的。这似乎是教练想要的。感谢您的帮助,我真的很感激。

(define (diffVol volume1 volume2)
        (display "The volume difference is: ")
        (- volume1 volume2 )
   )


 (diffVol (triVol (read) (read) (read))
    (triVol (read) (read) (read))
  )