elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 08:57  


Tema destacado: Grupo de Facebook de elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo, raul338)
| | |-+  Problema ordenando array al azar
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema ordenando array al azar  (Leído 695 veces)
$Edu$


Desconectado Desconectado

Mensajes: 1.416



Ver Perfil
Problema ordenando array al azar
« en: 27 Septiembre 2011, 17:55 »

Es una boludez lo que no puedo hacer, el problema estara en como creo el random, ya que no se si sale el 0 y tambien me confundo con .net lo que pasa porque hacia mucho que no tocaba vb6 y digo esto porque talvez tengo problemas con los bucles con los valores posibles de i

Esto que dejo crea un bucle infinito dentro del do-loop while y la idea es que tome los items del listbox y los meta al azar en el array nombre()

Código
Private Sub Form_Load()
Dim i As Integer
Dim j As Integer
Dim sigue As Boolean
Dim ran As Integer
 
ReDim Equipo(frmChampion.ListNombre.ListCount)
ReDim Nombre(frmChampion.ListNombre.ListCount)
 
Cant = frmChampion.ListNombre.ListCount
 
For i = 0 To UBound(Nombre)
 
   Do
        Randomize
        ran = Int(Rnd() * Cant + 1)
 
   Loop While Nombre(ran) <> vbNullString
 
   Nombre(ran) = frmChampion.ListNombre.List(i)
 
   For j = 0 To Cant
        If Nombre(j) = vbNullString Then
            sigue = True
        End If
 
   Next
 
   If sigue = False Then
       Exit For
   End If
 
Next
 
For j = 0 To UBound(Nombre)
   Debug.Print Nombre(j)
Next
 
End Sub
 


En línea

"Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas." - Albert Einstein.
79137913


Desconectado Desconectado

Mensajes: 780


4 Esquinas


Ver Perfil WWW
Re: Problema ordenando array al azar
« Respuesta #1 en: 27 Septiembre 2011, 18:27 »

HOLA!!!

Usa esta funcion:
Código
Private Function RandomizeArray7913(arr() As Long) As Long()
'cambiar      ACA-v    abajo*        ACA-^    ACA-^ para cambiar el tipo
Dim auxArr() As Long
Dim pos As Long
Dim lb As Long
Dim ub As Long
Dim ct As Long
   Randomize Timer
   ct = lb
   lb = LBound(arr)
   ub = UBound(arr)
   ReDim auxArr(lb To ub)
   pos = Int(Rnd() * (ub - lb + 1 )) + lb
   auxArr(pos) = arr(ct)
   ct = ct + 1
   While ct <= ub
       pos = Int(Rnd() * (ub - lb + 1 )) + lb
       While auxArr(pos) <> 0 'PARA VARIANT NOT ISEMPTY(AUXARR(POS)) PARA STRING AUXARR (POS) <> ""
           pos = Int(Rnd() * (ub - lb + 1 )) + lb
       Wend
       auxArr(pos) = arr(ct)
       ct = ct + 1
   Wend
   RandomizeArray7913 = auxArr
End Function
 

Asi se usa:
Código
Private Sub Form_Load()
Dim a(9) As Long
Dim b() As Long
 
For x = 0 To 9
a(x) = x
Next
b = RandomizeArray7913(a)
For x = LBound(b) To UBound(b)
   Debug.Print b(x)
Next
End Sub

GRACIAS POR LEER!!!


« Última modificación: 28 Septiembre 2011, 14:55 por 79137913 » En línea

"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

 79137913                          *Shadow Scouts Team*                                                          Resumenes Cs.Economicas
BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 2.832


I'Love...!¡.


Ver Perfil WWW
Re: Problema ordenando array al azar
« Respuesta #2 en: 27 Septiembre 2011, 19:54 »

http://foro.elhacker.net/programacion_visual_basic/source_cpushsort-t340133.0.html

Dulces Lunas!¡.
En línea

Web Principal-->[ Blog(VB6) | Host File (Public & Private) | Scan Port | (New)MyInfraPC (Descubre mi Contraseña venefi. $) ]



The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi
$Edu$


Desconectado Desconectado

Mensajes: 1.416



Ver Perfil
Re: Problema ordenando array al azar
« Respuesta #3 en: 28 Septiembre 2011, 01:26 »

Gracias por las molestia pero me sigue creando un bucle infinito y tengo que terminar la aplicacion.
Si pueden mirar mi codigo que esta bien entendible pienso y me dicen que hice mal, les agradezco
En línea

"Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas." - Albert Einstein.
ignorantev1.1


Desconectado Desconectado

Mensajes: 424


/\ Así acabo cuando quiero programar...


Ver Perfil WWW
Re: Problema ordenando array al azar
« Respuesta #4 en: 28 Septiembre 2011, 04:05 »

Código
 
Cant = frmChampion.ListNombre.ListCount //Supongamos que es 8 (0 a 7)
 
For i = 0 To UBound(Nombre)
 
   Do
        Randomize
        ran = Int(Rnd() * Cant + 1)
'Tienes una lista con 8 campos (0 a 7), al hacer Rnd*8 el numero maximo será 7
'Pero como le sumas 1, RAN podría valer 8, que sería un valor fuera de rango.

   Loop While Nombre(ran) <> vbNullString
'El ciclo se romperá "por suerte" :D, podrían salir solo 4's, 6's o 2's en cuyos
'campos siempre habría una cadena valida, lo que permitiría la inmortalidad del ciclo.

Saludos!
En línea


$Edu$


Desconectado Desconectado

Mensajes: 1.416



Ver Perfil
Re: Problema ordenando array al azar
« Respuesta #5 en: 28 Septiembre 2011, 04:40 »

Como? mi idea con ese bucle es que genere numeros hasta que nombre(esenumero) no contenga nada, asi le pone el valor del item i
O lo estoy haciendo mal? no te entendi bien, dime q puedo cambiar ahi.
En línea

"Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas." - Albert Einstein.
BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 2.832


I'Love...!¡.


Ver Perfil WWW
Re: Problema ordenando array al azar
« Respuesta #6 en: 28 Septiembre 2011, 04:54 »

numeros aleatorios sin repeticion?...

http://foro.elhacker.net/programacion_visual_basic/src_crndnumbersnr_generar_numeros_aleatorios_sin_repetir_veryfast-t328967.0.html

Dulces Lunas!¡.
En línea

Web Principal-->[ Blog(VB6) | Host File (Public & Private) | Scan Port | (New)MyInfraPC (Descubre mi Contraseña venefi. $) ]



The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi
$Edu$


Desconectado Desconectado

Mensajes: 1.416



Ver Perfil
Re: Problema ordenando array al azar
« Respuesta #7 en: 28 Septiembre 2011, 19:48 »

Alguien que me diga la parte del codigo mio que esta mal?
En línea

"Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas." - Albert Einstein.
$Edu$


Desconectado Desconectado

Mensajes: 1.416



Ver Perfil
Re: Problema ordenando array al azar
« Respuesta #8 en: 28 Septiembre 2011, 20:07 »

Ya pude, le cambie lo que dijo Ignorante, de quitarle el + 1 que yo habia puesto que ya ni me acuerdo porque.
Y le puse que los bucles sean hace ubound(nombre) -1

Pero ahora.. la gran pregunta.. porque? Si yo creo un array(6) , el ubound(array) sera igual a 6? no tendria que ser igual a 5? Cometi ese error que tendria que saberlo no se porque me confundo cuando programo en C# y luego paso a vb6, si todos los arrays se inician en 0 y es lo mismo, o no se , si alguien me explica esto re basico, le agradezco.


Ya me explicaron y mi confuncion fue porque en C# al hacer:

Código
string[] hola = new string[6]
 

El array hola ira desde 0 to 5

Sin embargo en vb6

Código
dim hola(6) as string
 

El array hola ira desde 0 to 6 no?
« Última modificación: 28 Septiembre 2011, 20:15 por $Edu$ » En línea

"Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas." - Albert Einstein.
ignorantev1.1


Desconectado Desconectado

Mensajes: 424


/\ Así acabo cuando quiero programar...


Ver Perfil WWW
Re: Problema ordenando array al azar
« Respuesta #9 en: 28 Septiembre 2011, 20:34 »

Código
dim hola(6) as string
No, estás reservando 6 campos, 0 al 5.
Creo que en C# es lo mismo quen en VB. Casi todos los arrays inician en 0, a menos que especifiques lo contrario:

Citar
miarray(1 to 6)

Saludos!

En línea


$Edu$


Desconectado Desconectado

Mensajes: 1.416



Ver Perfil
Re: Problema ordenando array al azar
« Respuesta #10 en: 28 Septiembre 2011, 21:15 »

Me saque las dudas y estoy en lo correcto yo :/
En línea

"Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas." - Albert Einstein.
Tenient101

Desconectado Desconectado

Mensajes: 127


Ver Perfil
Re: Problema ordenando array al azar
« Respuesta #11 en: 29 Septiembre 2011, 04:02 »

Código
dim hola(6) as string
No, estás reservando 6 campos, 0 al 5.
Creo que en C# es lo mismo quen en VB. Casi todos los arrays inician en 0, a menos que especifiques lo contrario:

Saludos!



esta reservando 7 espacios ya que el 0 cuenta, si quieres que no haya cero cambialo desde el Option Base
En línea
$Edu$


Desconectado Desconectado

Mensajes: 1.416



Ver Perfil
Re: Problema ordenando array al azar
« Respuesta #12 en: 30 Septiembre 2011, 04:44 »

No se que me pasaba pero ya volvi a entenderle la mano y ya mejore muchisimo mi codigo asqueroso xD

Código
 
max = UBound(Equipo)
 
For i = 0 To max
 
   Do
        Randomize Time
        ran = CInt(Rnd() * max)
 
   Loop While Ordenado(ran) <> ""
 
   Ordenado(ran) = Equipo
 
Next
 

xDD Lo dejo por si las moscas..
En línea

"Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas." - Albert Einstein.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda para pasar un array que esta en ARGV[] a un array INTEGER..
Programación General
nitr0us 7 2,003 Último mensaje 18 Febrero 2004, 17:23
por zheo
problema con array
Programación Visual Basic
Free-Knowledgend 4 407 Último mensaje 3 Julio 2006, 23:33
por <--v1c1ous-->
Copiar parte de una array a otra array
Programación Visual Basic
sircid 3 1,684 Último mensaje 19 Diciembre 2007, 11:27
por LeandroA
Azar -Nombres batch al azar -please ayuda
Scripting
usuario oculto 4 1,348 Último mensaje 16 Diciembre 2008, 19:44
por SmartGenius
problemilla ordenando registros
PHP
viher 6 1,390 Último mensaje 2 Septiembre 2010, 21:57
por Franki
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines