sábado, 18 de octubre de 2014

Solución a Reto Solveet (Desglose en billetes)

Usando un bucle mediante Repeat/Until y Continue. Si la cantidad data es igual o mayor que 500 le restamos 500 si el resto es mayor o igual a 500 repetimos la operación sino continuamos con el billete menor de 200 así sucesivamente con las demás cantidades, cuando el resto sea 0 detenemos el bucle .



' gambas class file

' by postapase

Public Sub btnDesglosar_Click()
Dim Euros As Long
Dim Resto As Long
Dim Billete500, Billete200, Billete100, Billete50, Billete20, Billete10, Billete5, Moneda2, Moneda1 As Long
Euros = Val(txtEuros.Text)

TextArea1.Clear

Repeat
If Euros >= 500 Then
Resto = Euros - 500
Euros = Resto
Inc Billete500
If Euros < 500 Then
If Billete500 > 1 Then
TextArea1.Text &= Billete500 & " Billetes de 500 euros" & gb.NewLine
Else
TextArea1.Text &= Billete500 & " Billete de 500 euros" & gb.NewLine
Endif
Endif
If Resto > 500 Then Continue
Endif

If Euros >= 200 Then
Resto = Euros - 200
Euros = Resto
Inc Billete200
If Euros < 200 Then
If Billete200 > 1 Then
TextArea1.Text &= Billete200 & " Billetes de 200 euros" & gb.NewLine
Else
TextArea1.Text &= Billete200 & " Billete de 200 euros" & gb.NewLine
Endif
Endif
If Resto > 200 Then Continue
Endif

If Euros >= 100 Then
Resto = Euros - 100
Euros = Resto
Inc Billete100
If Euros < 500 Then
If Billete100 > 1 Then
TextArea1.Text &= Billete100 & " Billetes de 100 euros" & gb.NewLine
Else
TextArea1.Text &= Billete100 & " Billete de 100 euros" & gb.NewLine
Endif
Endif
If Resto > 100 Then Continue
Endif

If Euros >= 50 Then
Resto = Euros - 50
Euros = Resto
Inc Billete50
If Euros < 50 Then
If Billete50 > 1 Then
TextArea1.Text &= Billete50 & " Billetes de 50 euros" & gb.NewLine
Else
TextArea1.Text &= Billete50 & " Billete de 50 euros" & gb.NewLine
Endif
Endif
If Resto > 50 Then Continue
Endif

If Euros >= 20 Then
Resto = Euros - 20
Euros = Resto
Inc Billete20
If Euros < 20 Then
If Billete20 > 1 Then
TextArea1.Text &= Billete20 & " Billetes de 20 euros" & gb.NewLine
Else
TextArea1.Text &= Billete20 & " Billete de 20 euros" & gb.NewLine
Endif
Endif
If Resto > 20 Then Continue
Endif

If Euros >= 10 Then
Resto = Euros - 10
Euros = Resto
Inc Billete10
If Euros < 10 Then
If Billete10 > 1 Then
TextArea1.Text &= Billete10 & " Billetes de 10 euros" & gb.NewLine
Else
TextArea1.Text &= Billete10 & " Billete de 10 euros" & gb.NewLine
Endif
Endif
If Resto > 10 Then Continue
Endif

If Euros >= 5 Then
Resto = Euros - 5
Euros = Resto
Inc Billete5
If Euros < 5 Then
If Billete20 > 1 Then
TextArea1.Text &= Billete5 & " Billetes de 5 euros" & gb.NewLine
Else
TextArea1.Text &= Billete5 & " Billete de 5 euros" & gb.NewLine
Endif
Endif
If Resto > 5 Then Continue
Endif

If Euros >= 2 Then
Resto = Euros - 2
Euros = Resto
Inc Moneda2
If Euros < 2 Then
If Moneda2 > 1 Then
TextArea1.Text &= Moneda2 & " Monedas de 2 euros" & gb.NewLine
Else
TextArea1.Text &= Moneda2 & " Moneda de 2 euros" & gb.NewLine
Endif
Endif
If Resto >= 2 Then Continue
Endif

If Euros >= 1 Then
Resto = Euros - 1
Euros = Resto
Inc Moneda1
If Euros < 1 Then
If Moneda1 > 1 Then
TextArea1.Text &= Moneda1 & " Monedas de 1 euros" & gb.NewLine
Else
TextArea1.Text &= Moneda1 & " Moneda de 1 euros" & gb.NewLine
Endif
Endif
If Resto > 1 Then Continue
Endif
Until Resto = 0

End

No hay comentarios.:

Publicar un comentario