Autor
|
Tema: Ayuda con bucles VB 2010 (Leído 9,130 veces)
|
juanlulete
Desconectado
Mensajes: 31
|
Hola, miren tengo un problema y es que en un programa que quiero hacer para estudiar juegos de azar, lo que pasa es que tengo que hacer un bucle dentro de otro y yo no lo se hacer.
El programa tiene un Botón(3), un Label(6) y un Textbox(2).
El programa funciona de la siguiente forma: Tu ingresas un nº en un Textbox y al darle a al Botón lo que hace el programa es, imaginaos que tira un dado de dos caras (imaginaos aunque sea imposible) pues el nº que ingreses en el Textbox es el nº de veces que se repite la misma cara y en el Label quiero que me aparezca el nº de veces que el programa a necesitado tirarlo para sacar tal nº.
Pensé que el programa debería tener esta apariencia:
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Label6.Text = 0 If TextBox2.Text = ("") Then TextBox2.Text = 0
Dim a As Integer Dim b As Integer = TextBox2.Text Dim c As Integer = TextBox2.Text For b = 1 To b a = Rnd(1) If a < 0.5 Then Label6.Text = Label6.Text + 1 If a < 0.5 Then For c = 1 To c If a < 0.5 Then Label6.Text = Label6.Text + 1
Aquí es donde irían los infinitos bucles
If a > 0.5 Then Label6.Text = Label6.Text + 1 Next c
End If
If a > 0.5 Then Label6.Text = Label6.Text + 1 Next b End Sub
Y dentro del segundo bucle otro con otra variable y otro con otra variable... Pero no tendría fin porque para hacer el programa bien tendría que hacer infinitos bucles con infinitas variables.
Espero que lo hayan entendido y que me ayuden. Gracias.
|
|
|
En línea
|
|
|
|
noele1995
Desconectado
Mensajes: 137
|
Lo primero de todo es que esto es VB.NET y no va aqui. Lo segundo po las etiquetas Geshi para que tu codigo sea legible o enserio nadie lo va a leer porque duele a la vista Lo tercero el ejemplo que te voy a dar va a estar en vb6 porque desconozco vb.net If not IsNumeric(Textbox2.Text) then exit sub Dim numeroVecesTotal as integer Dim numeroVeces as integer Dim a as integer Dim cnt asinteger numeroVecesTotal = textbox2.text Do while not numeroVeces = numeroVecesTotal a = CInt(Rnd) numeroVeces = numeroVeces + a cnt = cnt + 1 Loop Label6.text = cnt
|
|
|
En línea
|
|
|
|
juanlulete
Desconectado
Mensajes: 31
|
Muchas gracias y perdón por no poner el código donde debía pero para que sirve "CInt"
Gracias.
|
|
|
En línea
|
|
|
|
noele1995
Desconectado
Mensajes: 137
|
Cint lo que hace es redodear el numero a un integer es decir. En nuestro caso si el num es >= 0.5 entonces retornara 1 y si es < 0.5 retornara 0
|
|
|
En línea
|
|
|
|
juanlulete
Desconectado
Mensajes: 31
|
Una cosa que acabo de ver es que el código fuente que me diste esta mal: Imaginemos que en el textbox pongo un 3 y tu programa programa hace cint(rnd) y en ese cint(rnd) sale 1,0,1,1 si no me he equivocado en el label tendría que poner 4 pero en este ejemplo no a salido 3 veces seguidas el número 1 que es lo que quiero.
Ejemplo bueno Textbox = 5 cint(rnd) --> 1,0,1,0,0,0,1,1,1,1,1. En este caso si se ha repetido el 1 cinco veces y en el label pondría 11 que es el nº de veces que el bucle se ha tenido que ejecutar.
Espero que me hayas entendido. Gracias de antemano.
|
|
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
(Hablando de VB.NET) Amm no me acuerdo muy bien pero la clase string tiene la funcion split...
TextBox2.Text.Split(",")[0] TextBox2.Text.Split(",")[1] TextBox2.Text.Split(",")[2]
* si estas en VB .NET en lugar de usar CInt() usa Convert.ToInt32() o Convert.ToInt64() para transformar una string en un integer (32/64) * si vas a redondear usa Math.Round() mas no las funciones anteriores...
Dulces Lunas!¡.
|
|
« Última modificación: 13 Julio 2012, 14:26 pm por BlackZeroX (Astaroth) »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
juanlulete
Desconectado
Mensajes: 31
|
Si te digo la verdad soy un principiante autodidacta. No se lo que es VisualBasic.net Yo estoy utilizando Microsoft Visual Basic 2010 Express y estoy hacien el programa en una Aplicación de Windows Forms.
Conozco la función para redondear pero en este caso da igual y lo de cint funciona bien.
|
|
|
En línea
|
|
|
|
noele1995
Desconectado
Mensajes: 137
|
No, el codigo que te di esta bien porque la variable cnt se incrementa en cada pasada del bucle en 1 y al final se pone en el label el numrro de pasadas que son la variable cnt, pero la variable numrroVeces solo se incrementa si sale 1 que seria nuestra cara, y solo sale del bucle si ha salido nuestra cara el numronde veces del textbox
|
|
|
En línea
|
|
|
|
juanlulete
Desconectado
Mensajes: 31
|
Tienes razón en lo que dices pero me refiero a que el 1 salga un nº de veces seguidas = al textbox y lo que tu me estas poniendo no son seguidas me entiendes.
|
|
|
En línea
|
|
|
|
noele1995
Desconectado
Mensajes: 137
|
Ahh ok no te habia entendido bien entonces podria ser asi If not IsNumeric(Textbox2.Text) then exit sub Dim numeroVecesTotal as integer Dim numeroVeces as integer Dim a as integer Dim cnt asinteger numeroVecesTotal = textbox2.text Do while not numeroVeces = numeroVecesTotal a = CInt(Rnd) if a = 1 then numeroVeces = numeroVeces + 1 else numeroveces = 0 end if cnt = cnt + 1 Loop Label6.text = cnt
[/quote]
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Bucles.
Programación Visual Basic
|
mdg
|
4
|
2,588
|
28 Agosto 2007, 15:54 pm
por elmaro
|
|
|
{Resuelto} [vbs] importante! ayuda with bucles!
« 1 2 »
Scripting
|
xassiz_
|
12
|
6,338
|
26 Septiembre 2009, 21:04 pm
por xassiz_
|
|
|
ayuda con bucles
Programación C/C++
|
NLkurosaki
|
2
|
2,496
|
13 Diciembre 2010, 16:55 pm
por NLkurosaki
|
|
|
Necesito ayuda... sugerencia... programacion c (bucles,do,dowhile)
Programación C/C++
|
m4rkk0s
|
4
|
2,621
|
3 Julio 2012, 00:05 am
por durasno
|
|
|
ayuda con ArtCAM 2010
Foro Libre
|
ulises2012
|
0
|
1,402
|
15 Junio 2013, 17:27 pm
por ulises2012
|
|