1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
/* Ejercicio 8: Implementar un procedimiento que reciba un importe y visualice el desglose del cambio en unidades monetarias de céntimos de €, 1€, 2€, 5€, 10€, 50€. Ej. 58.9 = 1 billete de 50€, 1 billete de 5 €, 3 monedas de 1€ y 90 céntimos de € */ delimiter $$ drop procedure if exists 1x07 $$ create procedure 1x07(in e double) begin # Variables: declare euros integer default e div 1; #Parte entera declare centimos integer default truncate( (e-floor(e)), 2 )*100 div 1; #Parte decimal declare cincuentaEuros, diezEuros, dosEuros, unEuro, cincuentaCents, veinteCents, cincoCents, dosCents, unCents integer default 0; # Euros: set cincuentaEuros = euros div 50; set diezEuros = euros mod 50 div 10; set dosEuros = euros mod 50 mod 10 div 2; set unEuro = euros mod 50 mod 10 mod 2 div 1; # Centimos: set cincuentaCents = centimos div 50; set veinteCents = centimos mod 50 div 20; set cincoCents = centimos mod 50 mod 20 div 5; set dosCents = centimos mod 50 mod 20 mod 5 div 2; set unCents = centimos mod 50 mod 20 mod 5 mod 2 div 1; # Muestra el resultado de forma desglosada: select e as 'Total', if( cincuentaEuros = 0, null, cincuentaEuros ) as '50€', if( diezEuros = 0, null, diezEuros ) as '10€', if( dosEuros = 0, null, dosEuros ) as '2€', if( unEuro = 0, null, unEuro ) as '1€', if( cincuentaCents = 0, null, cincuentaCents ) as '0,50€', if( veinteCents = 0, null, veinteCents ) as '0,20€', if( cincoCents = 0, null, cincoCents ) as '0,05€', if( dosCents = 0, null, dosCents ) as '0,02€', if( unCents = 0, null, unCents ) as '0,01€' ; end $$ delimiter ; -- call 1x07(524.60); |