elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 05:16  


Tema destacado: Últimos eventos sobre seguridad/inseguridad

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (Moderador: [D4N93R])
| | | |-+  desglosar
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: desglosar  (Leído 737 veces)
andaluz

Desconectado Desconectado

Mensajes: 266



Ver Perfil
desglosar
« en: 3 Enero 2012, 13:56 »

Hola a todos, estoy realizando una aplicación que me desglose una cantidad que le introduzco por teclado en los billetes y monedas correspondientes, aquí os dejo el programa y el código que he implementado yo, en el código le he introducido algunos Messagebox para que me enseñe por pantalla lo que me va devolviendo en la operación de la cantidad que le introduzco.

código de la aplicación:
Código
Public Class Form1
   ' Una máquina expendedora de dinero necesita calcular el número de billetes y monedas que corresponden
   ' a una cantidad (sin decimales.) Elaborar una aplicación que a través de un TEXTBOX introduzca una cantidad
   ' y con LABELS que me muestre cuántos billetes de 500 100 50 20 10 5 hay en esa cantidad. Ejemplo: 472 -> 4
   ' de 100, 1 de 50, 1 de 20 (me sobran 2 euros que no los tengo presentes pues no hay un billete de 2 euros)
 
   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
   End Sub
 
   Private Sub btn_Desglosar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Desglosar.Click
       Dim resto As Integer = 0
       Dim b_500, b_200, b_100, b_50, b_20, b_10, b_5, m_2, m_1 As Integer
 
       'b_500 = 0 & b_200 = 0 & b_100 = 0 & b_50 = 0 & b_20 = 0 & b_10 = 0 & b_5 = 0 & m_2 = 0 = 0 & m_1 = 0
 
       Try
           If txt_Cantidad.Text = "" Then
               MessageBox.Show("No ha introducido ninguna cantidad a desglosar", "Informacion", MessageBoxButtons.OK, MessageBoxIcon.Information)
           End If
 
           If txt_Cantidad.Text > 500 Then
               b_500 = CInt(txt_Cantidad.Text) / 500
               txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_500 * 500)
               MessageBox.Show("Billetes de 500: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
           End If
 
           If txt_Cantidad.Text > 200 Then
               b_200 = CInt(txt_Cantidad.Text) / 200
               txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_200 * 200)
               MessageBox.Show("Billetes de 200: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
           End If
 
           If txt_Cantidad.Text > 100 Then
               b_100 = CInt(txt_Cantidad.Text) / 100
               txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_100 * 100)
               MessageBox.Show("Billetes de 100: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
           End If
 
           If txt_Cantidad.Text > 50 Then
               b_50 = CInt(txt_Cantidad.Text) / 50
               txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_50 * 50)
               MessageBox.Show("Billetes de 50: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
           End If
 
           If txt_Cantidad.Text > 20 Then
               b_20 = CInt(txt_Cantidad.Text) / 20
               txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_20 * 20)
               MessageBox.Show("Billetes de 20: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
           End If
 
           If txt_Cantidad.Text > 10 Then
               b_10 = CInt(txt_Cantidad.Text) / 10
               txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_10 * 10)
               MessageBox.Show("Billetes de 10: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
           End If
 
           If txt_Cantidad.Text > 5 Then
               b_5 = CInt(txt_Cantidad.Text) / 5
               txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_5 * 5)
               MessageBox.Show("Billetes de 5: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
           End If
 
           If txt_Cantidad.Text > 2 Then
               m_2 = CInt(txt_Cantidad.Text) / 2
               txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (m_2 * 2)
               MessageBox.Show("Monedas de 2: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
           End If
 
           If txt_Cantidad.Text >= 1 Then
               m_1 = CInt(txt_Cantidad.Text) / 1
               txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (m_1 * 1)
               MessageBox.Show("Monedas de 1: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
           End If
           txt_Cantidad.Text = ""
 
           MessageBox.Show("La cantidad desblosada en billetes es: " & vbCrLf &
                       "Billetes de 500: " & b_500 & " Billetes" & vbCrLf &
                       "Billetes de 200: " & b_200 & " Billetes" & vbCrLf &
                       "Billetes de 100: " & b_100 & " Billetes" & vbCrLf &
                       "Billetes de 50: " & b_50 & " Billetes" & vbCrLf &
                       "Billetes de 20: " & b_20 & " Billetes" & vbCrLf &
                       "Billetes de 10: " & b_10 & " Billetes" & vbCrLf &
                       "Billetes de 5: " & b_5 & " Billetes" & vbCrLf &
                       "Monedas de 2: " & m_2 & " Monedas" & vbCrLf &
                       "Monedad de 1: " & m_1 & " Monedas" & vbCrLf, "Billetes", MessageBoxButtons.OK)
       Catch ex As Exception
 
       End Try
 
   End Sub
End Class
 


En línea
Unbr0ken

Desconectado Desconectado

Mensajes: 248



Ver Perfil
Re: desglosar
« Respuesta #1 en: 3 Enero 2012, 22:35 »

Y... ¿tu error/problema es?


En línea

Cita de: Snowcrash
Discutir con desconocidos por internet es un ejercicio de imbéciles; todos acaban siendo quinceañeros arrogantes con cantidades infinitas de tiempo libre.

NO resuelvo dudas vía MP, para algo está el foro.
andaluz

Desconectado Desconectado

Mensajes: 266



Ver Perfil
Re: desglosar
« Respuesta #2 en: 9 Enero 2012, 12:25 »

mi error/problema es el siguiente:

no me desglosa bien en los billetes que deben de ser, por ejemplo si quiero desglosar 2348 me devuelve solo:
       5 billetes de 500
En línea
Novlucker
Ninja y
Ex-Staff
*
Desconectado Desconectado

Mensajes: 10.239


Yo que tu lo pienso dos veces


Ver Perfil
Re: desglosar
« Respuesta #3 en: 9 Enero 2012, 13:03 »

Cuando te ocurra eso, depuralo paso a paso.

Para empezar, deberías de utilizar CInt en cada if ...
Código
If CInt(txt_Cantidad.Text) > 500)
... y luego al dividir 2348 entre 500, el resultado debería de ser 4.696, por lo que te deberías de quedar con 4, pero te estas quedando con 5

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
http://twitter.com/novlucker

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

andaluz

Desconectado Desconectado

Mensajes: 266



Ver Perfil
Re: desglosar
« Respuesta #4 en: 9 Enero 2012, 13:49 »

sigue si hacerlo bien!!! la verdad es que no se cual sera el problema que tiene el código, espero que me puedan ayudar
En línea
andaluz

Desconectado Desconectado

Mensajes: 266



Ver Perfil
Re: desglosar
« Respuesta #5 en: 10 Enero 2012, 19:12 »

alguien sabe cual es el fallo que tiene este código??

Código
Public Class Form1
   ' Una máquina expendedora de dinero necesita calcular el número de billetes y monedas que corresponden
   ' a una cantidad (sin decimales.) Elaborar una aplicación que a través de un TEXTBOX introduzca una cantidad
   ' y con LABELS que me muestre cuántos billetes de 500 100 50 20 10 5 hay en esa cantidad. Ejemplo: 472 -> 4
   ' de 100, 1 de 50, 1 de 20 (me sobran 2 euros que no los tengo presentes pues no hay un billete de 2 euros)
 
   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
   End Sub
 
   Private Sub btn_Desglosar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Desglosar.Click
       Dim resto As Integer = 0
       Dim b_500, b_200, b_100, b_50, b_20, b_10, b_5, m_2, m_1 As Integer
 
       'b_500 = 0 & b_200 = 0 & b_100 = 0 & b_50 = 0 & b_20 = 0 & b_10 = 0 & b_5 = 0 & m_2 = 0 = 0 & m_1 = 0
 
       Try
           If txt_Cantidad.Text = "" Then
               MessageBox.Show("No ha introducido ninguna cantidad a desglosar", "Informacion", MessageBoxButtons.OK, MessageBoxIcon.Information)
           End If
 
           If CInt(txt_Cantidad.Text) > 500 Then
               b_500 = CInt(txt_Cantidad.Text) / 500
               txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_500 * 500)
               'MessageBox.Show("Billetes de 500: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
           End If
 
           If CInt(txt_Cantidad.Text) > 200 Then
               b_200 = CInt(txt_Cantidad.Text) / 200
               txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_200 * 200)
               'MessageBox.Show("Billetes de 200: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
           End If
 
           If CInt(txt_Cantidad.Text) > 100 Then
               b_100 = CInt(txt_Cantidad.Text) / 100
               txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_100 * 100)
               'MessageBox.Show("Billetes de 100: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
           End If
 
           If CInt(txt_Cantidad.Text) > 50 Then
               b_50 = CInt(txt_Cantidad.Text) / 50
               txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_50 * 50)
               'MessageBox.Show("Billetes de 50: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
           End If
 
           If CInt(txt_Cantidad.Text) > 20 Then
               b_20 = CInt(txt_Cantidad.Text) / 20
               txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_20 * 20)
               'MessageBox.Show("Billetes de 20: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
           End If
 
           If CInt(txt_Cantidad.Text) > 10 Then
               b_10 = CInt(txt_Cantidad.Text) / 10
               txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_10 * 10)
               'MessageBox.Show("Billetes de 10: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
           End If
 
           If CInt(txt_Cantidad.Text) > 5 Then
               b_5 = CInt(txt_Cantidad.Text) / 5
               txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_5 * 5)
               'MessageBox.Show("Billetes de 5: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
           End If
 
           If CInt(txt_Cantidad.Text) > 2 Then
               m_2 = CInt(txt_Cantidad.Text) / 2
               txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (m_2 * 2)
               'MessageBox.Show("Monedas de 2: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
           End If
 
           If CInt(txt_Cantidad.Text) >= 1 Then
               m_1 = CInt(txt_Cantidad.Text) / 1
               txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (m_1 * 1)
               'MessageBox.Show("Monedas de 1: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
           End If
           txt_Cantidad.Text = ""
 
           MessageBox.Show("La cantidad desblosada en billetes es: " & vbCrLf &
                       "Billetes de 500: " & b_500 & " Billetes" & vbCrLf &
                       "Billetes de 200: " & b_200 & " Billetes" & vbCrLf &
                       "Billetes de 100: " & b_100 & " Billetes" & vbCrLf &
                       "Billetes de 50: " & b_50 & " Billetes" & vbCrLf &
                       "Billetes de 20: " & b_20 & " Billetes" & vbCrLf &
                       "Billetes de 10: " & b_10 & " Billetes" & vbCrLf &
                       "Billetes de 5: " & b_5 & " Billetes" & vbCrLf &
                       "Monedas de 2: " & m_2 & " Monedas" & vbCrLf &
                       "Monedad de 1: " & m_1 & " Monedas" & vbCrLf, "Desglose", MessageBoxButtons.OK)
       Catch ex As Exception
 
       End Try
 
   End Sub
End Class
 
En línea
Novlucker
Ninja y
Ex-Staff
*
Desconectado Desconectado

Mensajes: 10.239


Yo que tu lo pienso dos veces


Ver Perfil
Re: desglosar
« Respuesta #6 en: 10 Enero 2012, 19:19 »

... y luego al dividir 2348 entre 500, el resultado debería de ser 4.696, por lo que te deberías de quedar con 4, pero te estas quedando con 5

Te lo he puesto antes, pero simplemente te lo has salteado

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
http://twitter.com/novlucker

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

andaluz

Desconectado Desconectado

Mensajes: 266



Ver Perfil
Re: desglosar
« Respuesta #7 en: 10 Enero 2012, 19:22 »

pero si le e echo el cint() a lo que tengo que calcular en cada if??
En línea
andaluz

Desconectado Desconectado

Mensajes: 266



Ver Perfil
Re: desglosar
« Respuesta #8 en: 10 Enero 2012, 19:24 »

le tendría que realizar el modulo a la cantidad que tengo que dividir para quedarme con el resto verdad???
En línea
Novlucker
Ninja y
Ex-Staff
*
Desconectado Desconectado

Mensajes: 10.239


Yo que tu lo pienso dos veces


Ver Perfil
Re: desglosar
« Respuesta #9 en: 10 Enero 2012, 19:37 »

pero si le e echo el cint() a lo que tengo que calcular en cada if??
Pero también había puesto eso.
Tu estas dividiendo, y al convertir a int redondea para arriba, cuando debería de ser para abajo.

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
http://twitter.com/novlucker

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

seba123neo


Desconectado Desconectado

Mensajes: 3.214



Ver Perfil WWW
Re: desglosar
« Respuesta #10 en: 10 Enero 2012, 22:44 »

te deberias hacer una funcion, te ahorras todos esos if y lineas de codigo.

saludos.
En línea

Mucha gente, especialmente la ignorante desea castigarte por decir la verdad, por ser correcto, por ser tú. Nunca te disculpes por ser correcto, o por estar años delante de tu tiempo.
Si estas en lo cierto, y lo sabes, que hable tu razón. Incluso si eres una minoria de uno solo, la verdad sigue siendo la verdad. M. Gandhi
andaluz

Desconectado Desconectado

Mensajes: 266



Ver Perfil
Re: desglosar
« Respuesta #11 en: 13 Enero 2012, 17:31 »

ok ya lo he solucionado!!!
En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
duda, valores acumulativos, "desglosar"
Programación General
SERBice 7 874 Último mensaje 30 Julio 2008, 19:34
por SERBice
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines