estudiante!!

liz
08 de Noviembre del 2007
necesito el lenguaje c de un programa para una caja de supermercado que lea un precio desde el teclado y una cantidad entregada por el cliente (se supone que cantidad >=precio) y obtenga en la pantalla numero minimo de monedas de 1 euro, 50 centimos, 10 centimos y 1 centimo que se debe dar de cambio. Por ejemplo, si precio es 1.12 euros y cantidad es 5 euros, debe dar como resultado 3 monedas de 1 euro, 1 moneda de 50 centimos, 10 monedas de 3 centimos y 8 monedas de 1 centimo.

Nacho
08 de Noviembre del 2007
No te voy a dar todo el código fuente, pero la forma de plantearlo es ésta:

Si suponemos que tienes un número de monedas infinito guiño (no es tan raro, es lo que se suele considerar si es el primer ejercicio que haces de este tipo), basta con que tomes cada vez la moneda de mayor valor que puedas:

Si el precio es $0,30 y se paga con $2:

Falta por pagar: 2-0,30 = 1,70
Mayor moneda/billete que es inferior a 1,70 -> $1, cantidad: 1,70 / 1 = 1

Falta por pagar: 1,70 - 1 = 0,70
Mayor moneda/billete que es inferior a 0,70 -> $0,50, cantidad: 0,70 / 0,50 = 1

Falta por pagar: 0,70 - 0,50 = 0,20
Mayor moneda/billete que es inferior a 0,20 -> $0,10, cantidad: 0,20 / 0,10 = 0

Falta por pagar: 0,20 - 0,20 = 0
Terminado

Si el número de monedas no fuera infinito, la situación se complica, porque hay que probar todas las posibilidades válidas hasta que una solucione el problema (es la técnica que se conoce como "backtracking"). Por ejemplo, si sólo tuvieras una moneda de $0,10, no podrías completar los $0,20 con ellas y deberías seguir probando con $0,05, y así sucesivamente.


(Lo acaban de preguntar aquí:
http://www.aprendeaprogramar.com/mod/forum/discuss.php?d=170#871

liz
08 de Noviembre del 2007
GRACIAS ME AYUDO EHH!!!!
NISIQUIERA TE ENTENDI PERO...
GRACIAS(en buena onda ariyatto;))