naltam90 Posted June 4, 2011 Report Share Posted June 4, 2011 hola que bueno este foro me ha servido mucho en mis trabajos!! Quiero realizar una consulta si me pueden ayudar.... :rolleyes: tengo un valor entero y quiero descomprimilos en puros enteros pero si su resultado es decimal guardar la parte entera y sus decimales pasarlos aentero entero, la idea es descomprimir un valor en cantiad de moneda chilena por ejemplo valor =38666 descomprimir 20000; 10000; 5000; 2000; 1000; 500; 100; 50; 10; 5; 1 <_< el resultado seria uno de cada uno y si fuera 59000 su resultado seria dos de 2000 uno de 10000 uno de 5000 y dos de 2000 por favor su ayuda :( Link to comment Share on other sites More sharing options...
bydra Posted June 4, 2011 Report Share Posted June 4, 2011 mod y div son de gran ayuda para este problema que es un dolor de cabeza al principio pero luego que le tomas el ritmo te das en la cabeza como tan facil el mod saca la parte decima y el div la parte entera.. asi se puede resolver.. ve si te sirve para este problema tienes millones de soluciones buen de hecho para todos tienes esa cantidad de soluciones pero piensa y te ayudo..no te puedo dar la respuesta..que cueste es mas rico :D Link to comment Share on other sites More sharing options...
cañangasñangas Posted June 4, 2011 Report Share Posted June 4, 2011 (edited) exponga lenguaje o sino no rinde :) no entendi ni mierda eso de los decimales... la parte que entendi lo haré en java, ya que supongo que estas estudiando informatica, porque este tipo de preguntas son de primer año de info, y normalmente parten con java int n = 59000; //numero feo no se como lo ingresas eso es cosa tuya int vals[][] = { {20000,0}, {10000,0}, {5000,0}, {2000,0}, {1000,0}, {500,0}, {100,0}, {50,0}, {10,0}, {5,0}, {1,0} }; int aux = 0; while(n > 0){ if(n > vals[aux][0]){ vals[aux][1]++; n-=vals[aux][0]; } else{ aux++; } } con eso te deberia quedar el array vals con cada billete y la cantidad... osea vals[n][0] = valor billete vals[n][1] = cantidad de billetes con eso deberia estar bien, lo hize a la rapida nose si tengo un error saludos mod y div son de gran ayuda para este problema que es un dolor de cabeza al principio pero luego que le tomas el ritmo te das en la cabeza como tan facil el mod saca la parte decima y el div la parte entera.. asi se puede resolver.. ve si te sirve para este problema tienes millones de soluciones buen de hecho para todos tienes esa cantidad de soluciones pero piensa y te ayudo..no te puedo dar la respuesta..que cueste es mas rico :D problem...? Edited June 5, 2011 by cañangasñangas Link to comment Share on other sites More sharing options...
Th3_K4T Posted June 5, 2011 Report Share Posted June 5, 2011 1º- Exponga el lenguaje 2º- Ese código es muy fácil, es a puro mod div (ver el resto de la división por el billete más grande, si es 0, intentar con uno de menor denominación, al menos que de 0 porque los números son iguales), se podría hacer con un switch case en caso de c y otros lenguajes que lo implementen, o sino, a puro if. 3º- Descomprimir? xD 4º- Ese código yo lo hice cuando estaba aprendiendo C, a si que me acuerdo bien. Link to comment Share on other sites More sharing options...
naltam90 Posted June 6, 2011 Author Report Share Posted June 6, 2011 Gracias por su ayuda.... Solo quiero comentar que esto lo hago en java y para ello tengo una clase y lo envio a un formulario en java gracias ..... Link to comment Share on other sites More sharing options...
cañangasñangas Posted June 6, 2011 Report Share Posted June 6, 2011 Gracias por su ayuda.... Solo quiero comentar que esto lo hago en java y para ello tengo una clase y lo envio a un formulario en java gracias ..... ve si lo que te puse sirve... lo unico que tienes que cambiar es el int n, por tu forma de ingresar el numerito... saludos... y me avizas Link to comment Share on other sites More sharing options...
weelbang Posted June 9, 2011 Report Share Posted June 9, 2011 Este problema claramente es muy similar al problema de cambio de moneda, cuyo pseudocódigo lo puedes encontrar googleando. Se puede resolver por programación dinámica y por greedy algorithms (mucho más rápido, pero debes saber cuando usarlo y si te entrega la solución óptima para tu caso). Yo lo realicé para un trabajo que me dieron en la U, así que te recomiendo que lo hagas por greedy algorithms, ya que es más fácil y rápido; con programación dinámica es bastante más complicado y demora más, pero siempre te va a entregar la solución óptima. Tómate tu tiempo e invertisga como primera opción la metodología de greedy y el problema de cambio de moneda. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now