2016-04-06 8 views
1
私は私はすでに三角形の量を計算するために作成した関数を使用して2つの三角形のボリュームの間の差を計算することができますスキームで関数を作成する必要が

で2つの三角形のボリュームの間の差を計算します。ここに私が持っているものがあります。私はdiffVol関数を働かせることができません。スキーム

あなたが volume1volume2を割り当てると、あなたはあなたは、このいずれかを行うことができ、再利用可能な機能

ことになるだろう場合はパラメータを必要とするdiffVol、任意の引数も

triVolを適用していない

(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) 
     ) 
    ) 
) 

答えて

1

ふたつのやり方。

A)diffVolが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がはるかに優れている二巻

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

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

を取り溶液。溶液Bは、あまりにも多くのパラメータを必要とし、あなたは彼らが行くどのような順序を忘れそうだ


備考

ネーミング:スキーム/ラケットキャメルケースを使用していません。小文字の名前には単語/語句を区切るハイフンが使用されます。述語手続きは?で終了する必要があります。

インデント: 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)) 
+0

すごいです!私は本当にあなたの応答に感謝します。私の割り当ては次のように述べています。 "2つの三角形の体積の差を計算する" DiffVol "というプロシージャを定義する。問題4で定義したTriVolプロシージャを使用する必要があります。ベース、高さ、深さの値はTriVolで読み込まれるため、パラメータを入力する必要はありません。入力を読む必要はありません。印刷手順を変更して、この手順が正しく機能するように印刷された値を返す必要があります。私はこれを行う方法がわかりません? – sportssmacky

+0

"base、height、depthの値はTriVolで読み込まれるため、パラメータはなく、入力を読む必要はありません。これは意味をなさない部分です。これらがあなたのインストラクターの正確な言葉であれば、私は彼/彼女はコンピュータプログラムについて効果的に話す方法がわからないと言います。 'diff-vol'の唯一の方法は、どの2つのボリュームが違いを計算するかをパラメータで知ることができます。 – naomik

+0

そう、私は同意する、これは宿題からまっすぐ引き出される。私はdifVol関数をどのように使うことができるのかわからないので、パラメータなしで動作することができます。 – sportssmacky

0

をインデント/命名上のいくつかの一般的な改善があります。これはインストラクターが望んでいるようです。あなたの助けてくれてありがとう、本当にありがとう。

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


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