elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  desglosar
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: desglosar  (Leído 10,636 veces)
andaluz


Desconectado Desconectado

Mensajes: 333



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

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
  1. Public Class Form1
  2.    ' Una máquina expendedora de dinero necesita calcular el número de billetes y monedas que corresponden
  3.    ' a una cantidad (sin decimales.) Elaborar una aplicación que a través de un TEXTBOX introduzca una cantidad
  4.    ' y con LABELS que me muestre cuántos billetes de 500 100 50 20 10 5 hay en esa cantidad. Ejemplo: 472 -> 4
  5.    ' 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)
  6.  
  7.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  8.  
  9.    End Sub
  10.  
  11.    Private Sub btn_Desglosar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Desglosar.Click
  12.        Dim resto As Integer = 0
  13.        Dim b_500, b_200, b_100, b_50, b_20, b_10, b_5, m_2, m_1 As Integer
  14.  
  15.        '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
  16.  
  17.        Try
  18.            If txt_Cantidad.Text = "" Then
  19.                MessageBox.Show("No ha introducido ninguna cantidad a desglosar", "Informacion", MessageBoxButtons.OK, MessageBoxIcon.Information)
  20.            End If
  21.  
  22.            If txt_Cantidad.Text > 500 Then
  23.                b_500 = CInt(txt_Cantidad.Text) / 500
  24.                txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_500 * 500)
  25.                MessageBox.Show("Billetes de 500: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
  26.            End If
  27.  
  28.            If txt_Cantidad.Text > 200 Then
  29.                b_200 = CInt(txt_Cantidad.Text) / 200
  30.                txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_200 * 200)
  31.                MessageBox.Show("Billetes de 200: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
  32.            End If
  33.  
  34.            If txt_Cantidad.Text > 100 Then
  35.                b_100 = CInt(txt_Cantidad.Text) / 100
  36.                txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_100 * 100)
  37.                MessageBox.Show("Billetes de 100: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
  38.            End If
  39.  
  40.            If txt_Cantidad.Text > 50 Then
  41.                b_50 = CInt(txt_Cantidad.Text) / 50
  42.                txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_50 * 50)
  43.                MessageBox.Show("Billetes de 50: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
  44.            End If
  45.  
  46.            If txt_Cantidad.Text > 20 Then
  47.                b_20 = CInt(txt_Cantidad.Text) / 20
  48.                txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_20 * 20)
  49.                MessageBox.Show("Billetes de 20: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
  50.            End If
  51.  
  52.            If txt_Cantidad.Text > 10 Then
  53.                b_10 = CInt(txt_Cantidad.Text) / 10
  54.                txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_10 * 10)
  55.                MessageBox.Show("Billetes de 10: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
  56.            End If
  57.  
  58.            If txt_Cantidad.Text > 5 Then
  59.                b_5 = CInt(txt_Cantidad.Text) / 5
  60.                txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_5 * 5)
  61.                MessageBox.Show("Billetes de 5: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
  62.            End If
  63.  
  64.            If txt_Cantidad.Text > 2 Then
  65.                m_2 = CInt(txt_Cantidad.Text) / 2
  66.                txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (m_2 * 2)
  67.                MessageBox.Show("Monedas de 2: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
  68.            End If
  69.  
  70.            If txt_Cantidad.Text >= 1 Then
  71.                m_1 = CInt(txt_Cantidad.Text) / 1
  72.                txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (m_1 * 1)
  73.                MessageBox.Show("Monedas de 1: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
  74.            End If
  75.            txt_Cantidad.Text = ""
  76.  
  77.            MessageBox.Show("La cantidad desblosada en billetes es: " & vbCrLf &
  78.                        "Billetes de 500: " & b_500 & " Billetes" & vbCrLf &
  79.                        "Billetes de 200: " & b_200 & " Billetes" & vbCrLf &
  80.                        "Billetes de 100: " & b_100 & " Billetes" & vbCrLf &
  81.                        "Billetes de 50: " & b_50 & " Billetes" & vbCrLf &
  82.                        "Billetes de 20: " & b_20 & " Billetes" & vbCrLf &
  83.                        "Billetes de 10: " & b_10 & " Billetes" & vbCrLf &
  84.                        "Billetes de 5: " & b_5 & " Billetes" & vbCrLf &
  85.                        "Monedas de 2: " & m_2 & " Monedas" & vbCrLf &
  86.                        "Monedad de 1: " & m_1 & " Monedas" & vbCrLf, "Billetes", MessageBoxButtons.OK)
  87.        Catch ex As Exception
  88.  
  89.        End Try
  90.  
  91.    End Sub
  92. End Class
  93.  


En línea

Unbr0ken

Desconectado Desconectado

Mensajes: 248



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

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: 333



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

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
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


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

Cuando te ocurra eso, depuralo paso a paso.

Para empezar, deberías de utilizar CInt en cada if ...
Código
  1. 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
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
andaluz


Desconectado Desconectado

Mensajes: 333



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

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: 333



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

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

Código
  1. Public Class Form1
  2.    ' Una máquina expendedora de dinero necesita calcular el número de billetes y monedas que corresponden
  3.    ' a una cantidad (sin decimales.) Elaborar una aplicación que a través de un TEXTBOX introduzca una cantidad
  4.    ' y con LABELS que me muestre cuántos billetes de 500 100 50 20 10 5 hay en esa cantidad. Ejemplo: 472 -> 4
  5.    ' 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)
  6.  
  7.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  8.  
  9.    End Sub
  10.  
  11.    Private Sub btn_Desglosar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Desglosar.Click
  12.        Dim resto As Integer = 0
  13.        Dim b_500, b_200, b_100, b_50, b_20, b_10, b_5, m_2, m_1 As Integer
  14.  
  15.        '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
  16.  
  17.        Try
  18.            If txt_Cantidad.Text = "" Then
  19.                MessageBox.Show("No ha introducido ninguna cantidad a desglosar", "Informacion", MessageBoxButtons.OK, MessageBoxIcon.Information)
  20.            End If
  21.  
  22.            If CInt(txt_Cantidad.Text) > 500 Then
  23.                b_500 = CInt(txt_Cantidad.Text) / 500
  24.                txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_500 * 500)
  25.                'MessageBox.Show("Billetes de 500: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
  26.            End If
  27.  
  28.            If CInt(txt_Cantidad.Text) > 200 Then
  29.                b_200 = CInt(txt_Cantidad.Text) / 200
  30.                txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_200 * 200)
  31.                'MessageBox.Show("Billetes de 200: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
  32.            End If
  33.  
  34.            If CInt(txt_Cantidad.Text) > 100 Then
  35.                b_100 = CInt(txt_Cantidad.Text) / 100
  36.                txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_100 * 100)
  37.                'MessageBox.Show("Billetes de 100: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
  38.            End If
  39.  
  40.            If CInt(txt_Cantidad.Text) > 50 Then
  41.                b_50 = CInt(txt_Cantidad.Text) / 50
  42.                txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_50 * 50)
  43.                'MessageBox.Show("Billetes de 50: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
  44.            End If
  45.  
  46.            If CInt(txt_Cantidad.Text) > 20 Then
  47.                b_20 = CInt(txt_Cantidad.Text) / 20
  48.                txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_20 * 20)
  49.                'MessageBox.Show("Billetes de 20: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
  50.            End If
  51.  
  52.            If CInt(txt_Cantidad.Text) > 10 Then
  53.                b_10 = CInt(txt_Cantidad.Text) / 10
  54.                txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_10 * 10)
  55.                'MessageBox.Show("Billetes de 10: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
  56.            End If
  57.  
  58.            If CInt(txt_Cantidad.Text) > 5 Then
  59.                b_5 = CInt(txt_Cantidad.Text) / 5
  60.                txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_5 * 5)
  61.                'MessageBox.Show("Billetes de 5: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
  62.            End If
  63.  
  64.            If CInt(txt_Cantidad.Text) > 2 Then
  65.                m_2 = CInt(txt_Cantidad.Text) / 2
  66.                txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (m_2 * 2)
  67.                'MessageBox.Show("Monedas de 2: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
  68.            End If
  69.  
  70.            If CInt(txt_Cantidad.Text) >= 1 Then
  71.                m_1 = CInt(txt_Cantidad.Text) / 1
  72.                txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (m_1 * 1)
  73.                'MessageBox.Show("Monedas de 1: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK)
  74.            End If
  75.            txt_Cantidad.Text = ""
  76.  
  77.            MessageBox.Show("La cantidad desblosada en billetes es: " & vbCrLf &
  78.                        "Billetes de 500: " & b_500 & " Billetes" & vbCrLf &
  79.                        "Billetes de 200: " & b_200 & " Billetes" & vbCrLf &
  80.                        "Billetes de 100: " & b_100 & " Billetes" & vbCrLf &
  81.                        "Billetes de 50: " & b_50 & " Billetes" & vbCrLf &
  82.                        "Billetes de 20: " & b_20 & " Billetes" & vbCrLf &
  83.                        "Billetes de 10: " & b_10 & " Billetes" & vbCrLf &
  84.                        "Billetes de 5: " & b_5 & " Billetes" & vbCrLf &
  85.                        "Monedas de 2: " & m_2 & " Monedas" & vbCrLf &
  86.                        "Monedad de 1: " & m_1 & " Monedas" & vbCrLf, "Desglose", MessageBoxButtons.OK)
  87.        Catch ex As Exception
  88.  
  89.        End Try
  90.  
  91.    End Sub
  92. End Class
  93.  
En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


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

... 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
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
andaluz


Desconectado Desconectado

Mensajes: 333



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

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

andaluz


Desconectado Desconectado

Mensajes: 333



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

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
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


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

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
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como logro desglosar la estructura de un virus...
Hacking
Grabaton 1 3,146 Último mensaje 20 Enero 2016, 19:54 pm
por MCKSys Argentina
Desglosar un string en partes. « 1 2 »
.NET (C#, VB.NET, ASP)
**Aincrad** 15 5,612 Último mensaje 1 Enero 2019, 17:40 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines