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