Título: [C++] Determinar el menor numero de billetas y monedas. Publicado por: djpacheco3 en 3 Septiembre 2019, 21:30 pm determinar el menor numero de billetes y monedas de curso legal equivalentes a cierta cantidad de pesetas(cambio óptimo)
Mod: Obligatorio el uso de títulos descriptivos. Ultimo aviso. https://foro.elhacker.net/reglas Título: Re: programacion en c++ Publicado por: Loretz en 3 Septiembre 2019, 23:17 pm Parece que te han tomado el pelo. Ya no se usan pesetas, ahora son euros.
Título: Re: programacion en c++ Publicado por: djpacheco3 en 3 Septiembre 2019, 23:28 pm Una funcion que ayude a unir los numeros a,b,c,d en un solo numero para poder redondearlo porfavor ayuda urgente!!!
Título: Re: programacion en c++ Publicado por: @XSStringManolo en 4 Septiembre 2019, 00:47 am Buscando en Google 100 pesetas = 60 céntimos.
Una peseta son 0,6 céntimos. Es decir si multiplico cualquiera que sea el valor de pesetas por 0,6 voy a obtener ese valor en euros. Por ejemplo 55 pesetas son 33 céntimos de euro. Teniendo esto, ya puedes convertir cualquier cantidad de Pesetas a euros. Ahora la parte del cambio. Se busca el cambio óptimo, es decir, darle la menor cantidad de billetes+monedas hasta llegar a la cantidad de euros. Tan sencillo como declarar todos los valores posibles de billetes y monedas e ir restándoselos a la cantidad de euros. Ejemplo. El usuario del programa quiere pasar sus 470 pesetas a euros en una máquina y que le de el cambio: Pasamos pesetas a euros. centimosDeEuro = pesetas*0'6; Son 282 céntimos. Es decir 2 euros y 82 céntimos. En un contenedor guardas todos los valores posibles de billetes y monedas. 500 200 100 50 20 10 5 2 1 0.50 0.20 0.10 0.05 0.02 0.01 Puedes representarlo todo en céntimos si te es más cómodo para no operar con decimales y haces el cambio a euros en el cout. Ahora para devolver el cambio compruebas cual es la cantidad más grande que puedes dar de esa lista y se lo restas a la cantidad total, esto lo haces en bucle hasta acabar con todo el dinero. 2.82€ - 2€ = 0.82€ 0.82€ - 0.50€ = 0.32€ 0.32€ - 0.20€ = 0.12€ 0.12€ - 0.10€ = 0.02€ 0.02€ - 0.02€ = 0.00€ Es decir, le das de cambio una moneda de 2€, una moneda de 50 céntimos, una de 20 centimos, una de 10 centimos y una de 2 céntimos. Puedes hacer algo estilo: Código Completalo y déjalo bien presentado. El otro ejercicio: " Una funcion que ayude a unir los numeros a,b,c,d en un solo numero para poder redondearlo ". No sé a que se refiere "unirlos" en un solo número. Sumarlos? Poner uno al lado del otro? Y menos aún entiendo lo de "que ayude"... Tienes que ayudar la función? O tiene que hacerlo? Si un profesor me pide eso tal cual le hago algo así: string numeros =""; numeros += a; numeros += b; numeros += c; numeros += d; cout << endl << "El numero \"unido\" es: << static_cast<int>(numeros); Y para aproximar miro el segundo y le sumo o no 1 al primero si es o pasa de 5 el segundo. Ya lo hago antes de meterlos en el string. if (b >= 5) {a++; b=0; c=0; d=0;} int numero = a; numero = numero*1000; Estes ejercicios son para que aprendas. Pero muchos profesores mandan hacer cosas sin explicar nada. Asique mírate libros de C++ por tu cuenta y pregunta por el foro lo que no entiendas o no consigas hacer. Si esperas que un profesor consultando un libro de cuando había pesetas se va a preocupar de enseñarte nada cuando ni se molesta en actualizar un libro de ejercicios o hacerlo el mismo... Pues vas fino ;) Título: Re: programacion en c++ Publicado por: djpacheco3 en 4 Septiembre 2019, 01:01 am Mira muchisisisimas gracias por lo anterior no es sumar por ejemplo:
A=5 B=6 C=6 D=1 Entonces el numero será 5661 y entonces el resultado redondeado será 5700 Y de eso yo quiero un procedimiento para poder hacer eso es lo que no entiendo de todo un ejercicio eso no mas una parte Título: Re: programacion en c++ Publicado por: @XSStringManolo en 4 Septiembre 2019, 02:12 am La manera más sencilla que se me ocurre es usando un string de C++
Código
Creo que se podía hacer cast de string a int, pero no te lo aseguro al 100%. Si no se puede simplemente lees el array/string al revés multiplicas cada número según su posición, por ejemplo incrementando la base*10 por cada iteración y sumas todos los números obtenidos. Tipo: Código
En el ejemplo de 5661 cada iteración del bucle anterior haría lo siguiente: 1) num = 1 * 1; base = 1*10; Num vale 1. Base vale 10. 2) num = 1 + 6*10; base = 10*10; Num vale 61. Base vale 100; 3) num = 61 + 6*100; 100*10; Num vale 661. base vale 1000. 4) num = 661 + 5*1000; 1000*10; Num vale 5661. Base 10000. Se acaban las iteraciones. Ahora, para redondear yo lo haría de la siguiente manera. Soy poco ortodoxo y eficiente programando, asique igual es mejor que busques otros ejemplos jeje. Si la segunda cifra empezando por la izquierda vale más o es igual a 5. Tienes el tamaño. Por lo tanto sabes la cantidad de cifras que tienes. En base a esto lo puedes hacer con operaciones simples. Código
1) base = 1*10 2) base = 10*10 3) base = 100*10 4) base = 1000*10 Como se te pasa por 10 le restas 1 iteración al bucle como quieras. Por ejemplo empezando con i = 1; Código
Después truncas el numero dividiéndolo por esa cantidad. Código
Es decir Código
Multiplicas de vuelta por la base. Código
Y te queda 5000. Código
Por último compruebo si debo aproximar o no. Código
Es decir: Código
Mod: Obligatorio el uso de etiquetas GeSHi. |