2016-04-11 17 views
0

Mein Ziel zu drucken versucht, ist es, ein Verfahren zu machen, die eine TriVol von einem anderen subtrahiert, aber leider immer ich diesen Fehler:Fehler, wenn ein Verfahren Scheme

contract violation expected: number? given: # argument position: 1st other arguments.

(Der Fehler tritt auf dem DiffVol Verfahren) Was ist die Bedeutung des Fehlers und warum passiert es und wie repariere ich es? Vielen Dank!

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



(define (TriVol) 
    (define base (read)) 
    (define height (read)) 
    (define depth (read)) 
    (* depth (TriArea base height)) 
    (display (* depth (TriArea base height)))) 


(define (DiffVol) 
    (display(- (Trivol) (TriVol)))) 

Antwort

1

Denken Sie daran, dass jede Funktion den Wert ihrer letzten Form zurückgibt. Der Grund für den Fehler ist also, dass die Funktion TriVol keine Ganzzahl, sondern einen ungültigen Wert zurückgibt, da ihre letzte Form display ist.

Also, in der Funktion DiffVol, die Form (- (TriVol) (TriVol)), die den Unterschied zwischen zwei ganzen Zahlen tun sollte, findet zwei ungültige Werte und gibt den Fehler.

Um den Fehler zu korrigieren, ändern Sie einfach den Code TriVol, um den richtigen Wert zurückzugeben.

Verwandte Themen