Realizar una aplicación que recoja por teclado la cantidad total a pagar y la cantidad que se ha entregado. La aplicación debe calcular el cambio correspondiente con el menor número de monedas y/o billetes posibles.
Module Module1 Sub Main() Dim total, entregado, vuelta As Double Dim billetes() As Single = {500, 200, 100, 50, 20, 10, 5} Dim monedas() As Single = {200, 100, 50, 20, 10, 5, 2, 1} Dim resultado(14) As Integer Console.Write("Introduzca la cantidad total: ") total = Console.ReadLine Console.Write("Introduzca la cantidad entregada: ") entregado = Console.ReadLine Console.WriteLine() 'Comprobamos las cantidades If (total > entregado) Then Console.WriteLine("Las cantidades no son correctas.") Console.WriteLine("La cantidad entregada debe ser mayor o igual al total.") ElseIf (total = entregado) Then Console.WriteLine("Ha entregado la cantidad exacta. No tiene cambio.") Else 'Calculamos la vuelta vuelta = entregado - total Console.WriteLine("Su vuelta es: " & vuelta & " Euros.") ' 1º con los billetes Dim i As Integer = 0 For Each cantidad As Single In billetes ' \ división entera resultado(i) = vuelta \ cantidad ' Lo que queda es el resto vuelta = vuelta Mod cantidad i += 1 Next ' Me daba error si cogía el valor de las monedas con decimales ' Así que multipliqué tanto el valor de estas como lo que queda de vuelta por 100 vuelta = vuelta * 100 ' 2º con las monedas For Each cantidad As Single In monedas resultado(i) = vuelta \ cantidad vuelta = vuelta Mod cantidad i += 1 Next Dim j As Integer = 0 For i = 0 To 6 If (resultado(j) <> 0) Then Console.WriteLine(resultado(j) & " billetes de " & billetes(i) & " Euros.") End If j += 1 Next For i = 0 To 7 If (resultado(j) <> 0) Then Console.WriteLine(resultado(j) & " monedas de " & (monedas(i) / 100) & " Euros.") End If j += 1 Next End If Console.ReadKey() End Sub End Module
No hay comentarios:
Publicar un comentario