1. #!r6rs
  2. (import (rnrs base (6)) (rnrs io simple) (only (racket base)
  3. quotient remainder))
  4.  
  5. ;vastleggen waarde van munten
  6. (define a 2)
  7. (define b 1)
  8. (define c 0.50)
  9. (define d 0.20)
  10. (define e 0.10)
  11. (define f 0.05)
  12. (define g 0.02)
  13. (define h 0.01)
  14. (define z 0)
  15. (define (bedrag x y) (begin
  16. (display x) ; geef aantal munten weer (numeriek)
  17. (if (> x 1) ; als aantal munten groter is als 1
  18. (display " munten van ") ; dan
  19. (display " munt van ")) ;anders
  20. (display y) ; geef waarde munten weer (numeriek)
  21. (if (integer? y) ;als waarde munt integer is
  22. (display " euro") ;dan
  23. (display " eurocent")))) ;anders
  24.  
  25.  
  26. (define (wisselgeld p g)
  27. (if (< 1 (/ (- g p) a)) ;als het verschil tussen gegeven en prijs(te betalen) > dan 1
  28. (if (integer? (/ (- g p) a)) ;als te betalen gedeeld door eerste munt integer is
  29. (bedrag (/ (- g p) a) a) ;dan display eerst munt aantal en stop
  30. ((bedrag (quotient (- g p) a)) ;anders, display quotient (integer waarde deling)
  31. (set! z (remainder (- g p) a)))) ; set remainder naar z [PROBLEEM]
  32. (if (< 1 (/ z b)) ;als het verschil tussen gegeven en prijs(te betalen) > dan 1
  33. (if (integer? (/ z b)) ;als te betalen gedeeld door tweede munt integer is
  34. (bedrag (/ z b) b) ;dan display eerst munt aantal en stop
  35. ((bedrag (quotient z b) ;anders, display quotient (integer waarde deling)
  36. (set! z (remainder (z b)))) ; set remainder naar z [PROBLEEM]
  37. )))))
  38.  
  39. (wisselgeld 24 100)