Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: usuarioarroba en 28 Agosto 2011, 22:05 pm



Título: Generar combinacion de 5 numeros escogiendo los valores de un array
Publicado por: usuarioarroba en 28 Agosto 2011, 22:05 pm
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?


Título: Re: Generar combinacion de 5 numeros escogiendo los valores de un array
Publicado por: BlackZeroX en 28 Agosto 2011, 22:10 pm
llevas algo?...

P.D.: No tareas.

Dulces Lunas!¡.


Título: Re: Generar combinacion de 5 numeros escogiendo los valores de un array
Publicado por: usuarioarroba en 29 Agosto 2011, 14:30 pm
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).
Código:
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


Título: Re: Generar combinacion de 5 numeros escogiendo los valores de un array
Publicado por: 79137913 en 29 Agosto 2011, 15:36 pm
HOLA!!!

Aca te dejo con tu base de codigo, indestado y un poco mejorado:
Código
  1. Private Sub Command1_Click()
  2.    Dim cinconumeros(1 To 5) As Integer
  3.    Dim temporal As Integer
  4.    Dim I, J, X, Y As Integer
  5.    J = 1
  6.    progreso.Max = txtcantidad
  7.    For contador = 1 To txtcantidad
  8.        progreso.Value = contador
  9.        Randomize Timer
  10.  
  11.        For I = 1 To 5
  12.            If I = 1 Then
  13.                cinconumeros(J) = Int((50 * Rnd) + 1)
  14.                J = J + 1
  15.            Else
  16. retorno:
  17.                temporal = Int((50 * Rnd) + 1)
  18.                For X = 1 To 5
  19.                    If temporal = cinconumeros(X) Then
  20.                        GoTo retorno
  21.                    End If
  22.                Next X
  23.                cinconumeros(J) = temporal
  24.                J = J + 1
  25.            End If
  26.        Next I
  27.        For Y = 0 To 4
  28.            txt(Y).Text = txt(Y).Text + "," + Str(cinconumeros(Y + 1))
  29.        Next
  30.    Next
  31.    MsgBox ("Los datos han sido generados")
  32. End Sub
  33.  
  34. Private Sub Command2_Click()
  35. Dim Z As Long
  36.    Open txtruta For Append As #1
  37.        For Y = 0 To 4
  38.            Print #1, txt(Z)
  39.        Next
  40.    Close #1
  41.    MsgBox ("Los datos se  han pasado al archivo")
  42. End Sub
  43.  

GRACIAS POR LEER!!!


Título: Re: Generar combinacion de 5 numeros escogiendo los valores de un array
Publicado por: usuarioarroba en 29 Agosto 2011, 21:25 pm
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.


Título: Re: Generar combinacion de 5 numeros escogiendo los valores de un array
Publicado por: BlackZeroX en 30 Agosto 2011, 02:54 am
@usuarioarroba

No le dejes la enseñanza a la academia se un poco autodidacta... usa Redim.

Dulces Lunas!¡.


Título: Re: Generar combinacion de 5 numeros escogiendo los valores de un array
Publicado por: usuarioarroba en 30 Agosto 2011, 12:10 pm
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.


Título: Re: Generar combinacion de 5 numeros escogiendo los valores de un array
Publicado por: usuarioarroba en 30 Agosto 2011, 12:14 pm
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


Título: Re: Generar combinacion de 5 numeros escogiendo los valores de un array
Publicado por: 79137913 en 30 Agosto 2011, 13:20 pm
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!!!