Jump to content

descomprimir decimales para pasarlos a enteros


Recommended Posts

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

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

exponga lenguaje o sino no rinde :) :nose:

 

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

 

:trollface: problem...?

Edited by cañangasñangas
Link to comment
Share on other sites

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

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

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...