Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Spare some change?

Name: Anonymous 2012-12-15 18:39

so, I am trying to write a change-counting program in scheme for some practice (I'm new to programming). Here is what I have:



 define (change-iter change quarter dime nickel penny)
  (cond ((< change 1.00)
          (change-iter (- change 0.25) (+ quarter 1) dime nickel penny))
         ((< change .25)
          (change-iter (- change 0.10) quarter (+ dime 1) nickel penny))
         ((< change .10)
          (change-iter (- change 0.05) quarter dime (+ nickel 1) penny))
         ((< change 0.5)
          (change-iter (- change 0.01) quarter dime nickel (+ penny 1)))
         ((= change 0)
          (display quarter)
          (newline)
          (display dime)
          (newline)
          (display nickel)
          (newline)
          (display penny)
          (newline))))

(define (change-counter change)
  (change-iter change 0 0 0 0))


it doesn't display the coins at the end.  What am I doing wrong?

Name: Anonymous 2012-12-18 10:52

ok, so, I got it working in regular scheme and it looks nice on the return, but...  For whatever reason, on the amounts between 89 and 92 cents, it returns the wrong number of pennies.  pretty much every other number comes out right.  Why?


(define (change-iter change twenty ten five one quarter dime nickel penny)
  (cond ((>= change 20.00)
     (change-iter (- change 20.00) (+ twenty 1) 0 0 0 0 0 0 0))
    ((>= change 10.00)
     (change-iter (- change 10.00) twenty (+ ten 1) 0 0 0 0 0 0))
    ((>= change 5.00)
     (change-iter (- change 5.00) twenty ten (+ five 1) 0 0 0 0 0))
    ((>= change 1.00)
     (change-iter (- change 1.00) twenty ten five (+ one 1) 0 0 0 0))
    ((>= change 0.25)
      (change-iter (- change 0.25) twenty ten five one (+ quarter 1) 0 0 0))
    ((>= change 0.10)
      (change-iter (- change 0.10) twenty ten five one quarter (+ dime 1) 0 0))
    ((>= change 0.050)
      (change-iter (- change 0.050) twenty ten five one quarter dime (+ nickel 1) 0))
    ((> change 0.00)
      (change-iter (- change 0.010) twenty ten five one quarter dime nickel (+ penny 1)))
    (else
     (newline)
     (display (string twenty "   Twenties"))
     (newline)
     (display (string ten "   Tens"))
     (newline)
     (display (string five "   Fives"))
     (newline)
     (display (string one "   Ones"))
     (newline)
     (display (string quarter "   Quarters"))
     (newline)
     (display (string dime "   Dimes"))
     (newline)
     (display (string nickel "   Nickels"))
     (newline)
     (display (string penny "   Pennies")))))

(define (change-counter change)
  (change-iter change 0 0 0 0 0 0 0 0))

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List