Ver Mensaje Individual
  #3 (permalink)  
Antiguo 01/12/2014, 05:20
balsard
 
Fecha de Ingreso: septiembre-2011
Mensajes: 2
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Programa maquina expendedora

Estaba leyendo tu problema cuando empiezo a ver el código sin ni 1 linea de comentario. Entiendo que tú como sumo creador del código lo entiendas, pero si pretendes que la gente te ayude, aunque sea muy fácil el código escribe comentarios que son gratis y la gente no tendrá que hacer por entender tu codigo.

Por lo demás te diria lo mismo que el compañero 1 funcion con 2 parametros es mejor que muchas funciones. Intenta reultilizar lo que hagas .

Tambien te digo en Pseudocódigo una solución fácil.

array monedasDisponibles [2,1,0.5, ... ] // monedas de las que dispone la maquina
var cambio; //cambio que tendra que dar la maquina
array cambioADar; //cantidad de cada moneda que disponsara


function cambioMaquina($cambio){

for(i=0; i<monedasDisponibles.count(); i++){// recorremos todo el bucle de monedas posibles

if(monedasDisponibles[i]<$cambio){ // si la cantidad a cambiar es mayor que la moneda actual
cambioADar[i] = parteEntera($cambio/monedasDisponibles[i]); /* le doy la parte entera de la division del cambio entre las monedas*/
$cambio -= monedasDisponibles[i] * cambioADar[i]; /* quito del cambio que tengo que dar las monedas que ya he dado*/
}
if ($cambio == 0) break; // si ya no tengo que dar mas cambio termino
}
return cambioADar; // dispenso el numero de monedas
}

Bueno iba a poner pseudocodigo y al final me pudo, he mezclado un poco de muchos lenguajes intenta ponerlo en el que necesites. La funcion parteEntera no es mas que el suelo de un numero (ej.: 9.823 -> suelo o parte entera = 9)