Necesito crear en VB6 un pequeño programa que genere una combinación de 5 números aleatorios. La combinación debe generarse con una serie de números que yo indique, que algunas veces será mayor y otras veces menor (ejemplo: 1, 2, 5, 6, 9, 21, 22 -- o -- 32, 11, 2, 4, 88), en vez de generarse del 1 al 100 como se suele hacer típicamente. El resultado aparecerá en un txtbox y en la combinación no pueden salir números repetidos. ¿Alguien sabría como hacer este programa?
llevas algo?...
P.D.: No tareas.
Dulces Lunas!¡.
Tengo hecho este pequeño programa que genera 5 números del 1 al 50, pero necesitaría modificarlo para poder generarlos en base a los que yo indique en un array, teniendo este unas veces mas números y otras menos.
En el formulario tengo una barra de progreso (progreso), el botón de generar (Command1), el botón de guardar (Command2) que guarda el resultado en un fichero dependiendo de la ruta escrita en un txtbox (txtruta). Lo que guarda son los valores que se van almacenando en los txtbox de resultado (txt(4)) de modo que en txt(0) se almacena el primer número generado, en txt(1) el segundo... si se generan mas, separado por una coma se pondría el segundo numero generado... esto depende del valor del txtbox que indica la cantidad de valores a generar (txtcantidad).
Private Sub Command1_Click()
progreso.Max = txtcantidad
For contador = 1 To txtcantidad
progreso.Value = contador
Randomize Timer
Dim cinconumeros(1 To 5) As Integer
Dim temporal As Integer
Dim i As Integer, j As Integer: j = 1
Dim x As Integer
For i = 1 To 5
If i = 1 Then
cinconumeros(j) = Int((50 * Rnd) + 1)
j = j + 1
Else
retorno:
temporal = Int((50 * Rnd) + 1)
For x = 1 To 5
If temporal = cinconumeros(x) Then
GoTo retorno
End If
Next x
cinconumeros(j) = temporal
j = j + 1
End If
Next i
txt(0).Text = txt(0).Text + "," + Str(cinconumeros(1))
txt(1).Text = txt(1).Text + "," + Str(cinconumeros(2))
txt(2).Text = txt(2).Text + "," + Str(cinconumeros(3))
txt(3).Text = txt(3).Text + "," + Str(cinconumeros(4))
txt(4).Text = txt(4).Text + "," + Str(cinconumeros(5))
Next
MsgBox ("Los datos han sido generados")
End Sub
Private Sub Command2_Click()
Open txtruta For Append As #1
Print #1, txt(0)
Print #1, txt(1)
Print #1, txt(2)
Print #1, txt(3)
Print #1, txt(4)
Close #1
MsgBox ("Los datos se han pasado al archivo")
End Sub
Private Sub Form_Load()
End Sub
Lo tengo subido en megaupload para que sea mas fácil de ver y entender: http://www.megaupload.com/?d=K1A4LGJO
HOLA!!!
Aca te dejo con tu base de codigo, indestado y un poco mejorado:
Private Sub Command1_Click()
Dim cinconumeros(1 To 5) As Integer
Dim temporal As Integer
Dim I, J, X, Y As Integer
J = 1
progreso.Max = txtcantidad
For contador = 1 To txtcantidad
progreso.Value = contador
Randomize Timer
For I = 1 To 5
If I = 1 Then
cinconumeros(J) = Int((50 * Rnd) + 1)
J = J + 1
Else
retorno:
temporal = Int((50 * Rnd) + 1)
For X = 1 To 5
If temporal = cinconumeros(X) Then
GoTo retorno
End If
Next X
cinconumeros(J) = temporal
J = J + 1
End If
Next I
For Y = 0 To 4
txt(Y).Text = txt(Y).Text + "," + Str(cinconumeros(Y + 1))
Next
Next
MsgBox ("Los datos han sido generados")
End Sub
Private Sub Command2_Click()
Dim Z As Long
Open txtruta For Append As #1
For Y = 0 To 4
Print #1, txt(Z)
Next
Close #1
MsgBox ("Los datos se han pasado al archivo")
End Sub
GRACIAS POR LEER!!!
Gracias 79137913. Ha quedado muy optimizado el código. Yo lo descargué de una web y lo modifiqué para adaptarlo a mi programa, pero con un curso de 3 meses de Visual Basic en una academia no es que sepa hacer gran cosa. Lo único que me falta es que en vez de generar los números del 1 al 50 los genere utilizando los de un array de tamaño indefinido. Con eso ya tendría el programa completo.
@usuarioarroba
No le dejes la enseñanza a la academia se un poco autodidacta... usa Redim.
Dulces Lunas!¡.
Bueno BlackZeroX▓▓▒▒░░ después de la academia estuve aprendiendo con la ayuda de Google, pero no soy un gran programador, se hacer algunas cosas con vb, php, asp y muy poco de C, pero como digo, no se me da muy bien.
79137913, da un error en la línea: For I = 1 To 5
Error '9' en tiempo de ejecución:
El subíndice está fuera del interval
HOLA!!!
Mira yo optimice tu codigo no lo revise, pero es imposible eso ya que la variable I no se usa en ningun subindice.
Fijate.
GRACIAS POR LEER!!!