Autor
|
Tema: desglosar (Leído 10,688 veces)
|
andaluz
Desconectado
Mensajes: 333
|
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: 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
Mensajes: 248
|
Y... ¿tu error/problema es?
|
|
|
En línea
|
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
Mensajes: 333
|
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
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Cuando te ocurra eso, depuralo paso a paso. Para empezar, deberías de utilizar CInt en cada if ... 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 5Saludos
|
|
|
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
Mensajes: 333
|
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
Mensajes: 333
|
alguien sabe cual es el fallo que tiene este 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
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
... 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
Mensajes: 333
|
pero si le e echo el cint() a lo que tengo que calcular en cada if??
|
|
|
En línea
|
|
|
|
andaluz
Desconectado
Mensajes: 333
|
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
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
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
|
|
|
|
|