2017-10-17 10 views
0

私はスキームを学んでいるので、飛行機の人数と飛行機の座席数に基づいて飛行機の数を計算する2つの機能を持つプログラムを実行しています。すべてが問題ない限り、問題は私が別の関数で関数を使用しようとするとき、私はそれを行う方法がわかりません。別の関数でschemeを使用して関数を呼び出す方法は?

まず機能:私は、各プレーンのための$ 1000のための手数料を配置する第二の機能で

(define calculate-aeroplanes 
    (lambda (passengers seats) 
    (ceiling (/ passengers seats)))) 

未満では11面だ場合、11日平面からの手数料は500 $になります、乗客ごとに50 $の料金がかかります。

私がやったことをここに

:あなたのコード例で

(define fee-airport 
    (lambda (passengers seats) 
    (cond 
     ((< calculate-aeroplanes (passengers seats) 11) 
     (+ (* calculate-aeroplanes 1000) 
      (* passengers 50))) 
     ((> calculate-aeroplanes (passengers seats) 10) 
     (+ (* calculate-aeroplanes (passengers seats) 10000) 
      (* (- calculate-aeroplanes (passengers seats) 10) 500) 
      (* passengers 50)))))) 

答えて

1

、あなたは+を使用しています。 +は決して特別なものではなく、単純な関数です。関数を適用するには、フォームの先頭に置くだけです。

(calculate-aeroplanes passenger seats) 

はスキームにおける関数呼び出しの構文は(function-name arguments)、ないfunction-name(arguments)で乗客や座席引数で計算-飛行機)

+0

、どうもありがとうございましたので、単純な、ただの構文ました。 –

3

を呼び出します。 <,+などを呼び出すときは正しい構文を使用しますが、calculate-aeroplanesを呼び出すときは正しく構文を使用しません。

+0

ありがとうございます! –

-1

が構文問題ま​​した、ここでのおかげで、新しいコードです:

(define fee-airport 
    (lambda(passengers seats) 
    (calculate-aeroplanes passengers seats) 
    (cond 
     ((< (calculate-aeroplanes passengers seats) 11) 
     (+ (* (calculate-aeroplanes passengers seats)1000) (* passengers 
      50))) 
     ((> (calculate-aeroplanes passengers seats) 10) 
      (+ (* (calculate-aeroplanes passengers seats)10000) (* (- 
      (calculate-aeroplanes passengers seats) 10) 500) (* passengers 
        50)))) 
     ) 
) 
関連する問題