Cajero automático en visual basic corregir

Bueno amigos tengo un pequeño con una aplicación que me dejaron hacer en donde estudio, y pues ya llevo bastante rato y no logro componer el error de mi aplicación (aviso que soy todavía algo novato en el visual basic)
El problema planteado era el siguiente;
Se tiene un cajero automático el cual permite manipular cierta cantidad de dinero para lo cual dispone de los siguientes billetes: S/. 10.00, S/. 20.00, S/. 50.00, S/. 100.00 y S/. 200.00. Elaborar una aplicación que permita la lectura de la cantidad a retirar e indique el menor número de billetes a utilizar.
y la aplicacion debe de tener este aspecto;
http://img216.imageshack.us/img216/9671/cajero.jpg
***Termine segun yo el codigo, y funciono mas o menos, pues por ejemplo cuando pido que voy a retirar unos 950 me da como resultado 5 billetes de 200, uno de 100 y 1 de 50.. Entonces se pasa, y tambien cuando ingreso que voy a retirar 10, me dice que retirara 10 billetes de 10***
El codigo que estoy usando es;
Private Sub CmdAceptar_Click()
Dim Reti As Integer, Billete200 As Integer, Billete100 As Integer, Billete50 As Integer, _
Billete20 As Integer, Billete10 As Integer
Reti = Val(TxtRetiro)
Billete200 = Reti / 200: Reti = Reti Mod 200
Billete100 = Reti / 100: Reti = Reti Mod 100
Billete50 = Reti / 50: Reti = Reti Mod 50
Billete20 = Reti / 20: Billete10 = Reti Mod 20
TxtBillete200 = Str(Billete200)
TxtBillete100 = Str(Billete100)
TxtBillete50 = Str(Billete50)
TxtBillete20 = Str(Billete20)
TxtBillete10 = Str(Billete10)
End Sub
Private Sub CmdLimpiar_Click()
TxtRetiro = "": TxtBillete10 = "":
TxtBillete20 = "": TxtBillete50 = "":
TxtBillete100 = "": TxtBillete200 = ""
TxtRetiro.SetFocus
End Sub
Private Sub CmdSalir_Click()
End
End Sub
Agradecería, me dijeran en que estoy fallando pues ya llevo rato aquí, y no logro encontrar una respuesta o una solución para esto

2 Respuestas

Respuesta
1
Lo que ocurre es que 950/200 es 4.75 pero como está definido como integer se aproxima de manera automática a 5.
Hay que usar la función Int la cual toma la parte entera de un número de la siguiente forma :
Billete200 = Int(Reti/200)
O sea el código sería de la siguiente forma :
Private Sub CmdAceptar_Click()
Dim Reti As Currency, Billete200 As Integer, Billete100 As Integer, Billete50 As Integer, _
Billete20 As Integer, Billete10 As Integer
Reti = Val(Txtretiro)
Billete200 = Int(Reti / 200): Reti = Reti Mod 200
Billete100 = Int(Reti / 100): Reti = Reti Mod 100
Billete50 = Int(Reti / 50): Reti = Reti Mod 50
Billete20 = Int(Reti / 20): Billete10 = Reti Mod 20
Txtbillete200 = Str(Billete200)
Txtbillete100 = Str(Billete100)
Txtbillete50 = Str(Billete50)
Txtbillete20 = Str(Billete20)
Txtbillete10 = Str(Billete10)
End Sub
Private Sub CmdLimpiar_Click()
  Txtretiro = "": Txtbillete10 = "":
  Txtbillete20 = "": Txtbillete50 = "":
  Txtbillete100 = "": Txtbillete200 = ""
  Txtretiro.SetFocus
End Sub
Private Sub CmdSalir_Click()
   End
End Sub
Suerte !
Gracias por tu pronta respuesta, y si veo que si funciono, gracias...
Solo quedo error cuando trato retirar 10 pero eso creo que sera más fácil, así que empezare a pensar como es que se resolvía.. pero gracias ifrancoz
Respuesta

//PROCESO

b200 = monto / 200;
monto = monto % 200;

b100 = monto / 100;
monto = monto % 100;

b50 = monto / 50;
monto = monto % 50;

b20 = monto / 20;
monto = monto % 20;

b10 = monto / 10;
monto = monto % 10;

//PROCESO

b200 = monto / 200;
monto = monto % 200;

b100 = monto / 100;
monto = monto % 100;

b50 = monto / 50;
monto = monto % 50;

b20 = monto / 20;
monto = monto % 20;

b10 = monto / 10;
monto = monto % 10;

Creo que este seria la parte del proceso, tu variable retri la cambie como monto y además, al billete de 10 lo hice como todos los demás con la divvision y el residuo, cuando lo compilo con el 950 me da 4 billetes de 200 1 de 100 y 1 de 50 ... :)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas