Hola!

Registrándote como bakuno podrás publicar, compartir y comunicarte en privado con otros bakuos :D

Regístrame ya!

Ayuda con Visual Net 2008

clionel

Bovino Milenario
Desde
22 Sep 2008
Mensajes
1.226
Hola amigos del corral, recién estoy empezando a programar en Visualnet 2008 y pues tengo un problemita con un poco de código, tengo datos en 1 listbox (lstcapturados), los cuales paso a un Arraylist (listaa) y necesito ordenarlos(método burbuja) y regresarlos ya ordenados a otro listbox (lstordenados)
Aquí el código espero me puedan ayudar, de antemano Gracias

Private Sub cmdordena_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdordena.Click
grpordenados.Visible = True
lstordenados.Visible = True
'AQUÍ QUIERO ORDENAR EL CONTENIDO DE LA LISTA1 A LISTA2, ESTOY BUSCANDO ALGUN METODO
'QUE ME FUNCIONE CORRECTAMENTE YA SEA BURBUJA, QUICKSORT, ETC


'Aquí Agrego los datos del listbox1 (lstcapturados) al Arraylist (listaa)
Dim q As Integer
With lstcapturados
listaa.Clear()
listaa.Capacity = lstcapturados.Items.Count
For q = 0 To .Items.Count - 1
listaa.Add(.GetItemText(.Items(q)))

Next
listaa.TrimToSize()
End With

'MÉTODO DE LA BURBUJA,
'No se si la propiedad a usar sea Item, ya que no me sale el ordenamiento
'Se acepta ayuda y/o correcciones para entender el Funcionamiento
Dim a, b, aux, alto As Integer
alto = listaa.Count
a = 0
b = 0
For a = 0 To alto Step +1
For b = 0 To alto Step +1
If listaa.Item(b) > listaa.Item(b + 1) Then
aux = listaa.Item(b)
listaa.Item(b) = listaa.Item(b + 1)
listaa.Item(b + 1) = aux

End If
Next
Next

'Aquí paso el contenido del Arraylist (listaa) al Listbox2 (lstordenado) >>falta ordenar<<
For x As Integer = 0 To listaa.Count - 1
lstordenados.Items.Add(listaa.Item(x))

Next

End Sub
 
Vamos amigos programadores ayúdenme, confío en ustedes
 
For a = 0 To alto-2 Step +1
For b = a+1 To alto-1 Step +1
If listaa.Item(a) > listaa.Item(b) Then
aux = listaa.Item(a)
listaa.Item(a) = listaa.Item(b)
listaa.Item(b) = aux
End If
Next
Next

Deberias aprender a programar... si estas en la carrera de sistemas
 
For a = 0 To alto-2 Step +1
For b = a+1 To alto-1 Step +1
If listaa.Item(a) > listaa.Item(b) Then
aux = listaa.Item(a)
listaa.Item(a) = listaa.Item(b)
listaa.Item(b) = aux
End If
Next
Next

Deberias aprender a programar... si estas en la carrera de sistemas
el bakuno ya te dio la respuesta pero yo tengo una gran duda que lenguaje es el VISUALNET2008
 
muchas se refieren a "visual .net" 2003, 2005, 2008 o 2010 cuando hablan de VISUAL BASIC .Net, la plataforma es Visual Studio .Net, los lenguajes: Visual Basic, C#, etc
 
For a = 0 To alto-2 Step +1
For b = a+1 To alto-1 Step +1
If listaa.Item(a) > listaa.Item(b) Then
aux = listaa.Item(a)
listaa.Item(a) = listaa.Item(b)
listaa.Item(b) = aux
End If
Next
Next

Deberias aprender a programar... si estas en la carrera de sistemas

Muchas gracias amigo Xbunbury, de verdad me sirvió tu código y te comento estoy estudiando una Licenciatura en Sistemas, sólo que es en línea, es decir nunca voy a la escuela, y al pedir ayuda en éste valioso foro pues es porque quiero aprender; espero comprendas mi situación, te agradezco tu ayuda, Acepto cualquier crítica también, así como sus ayudas, de nuevo Gracias.
Ahora sólo me falta comprender la lógica que utilizaste...
 
el bakuno ya te dio la respuesta pero yo tengo una gran duda que lenguaje es el VISUALNET2008

Bueno me refiero exactamente a Visual Basic 2008 Express Edition, cómunmente llamada Visual Net, Gracias por ayudar
 
Amigos de nuevo solicito su ayuda, ya que con el método que aportó el compañero XBunbury, al parecer hay un detalle que provoca que los números digamos 1, 2, 12, 10 lo ordena 1,10,12,2, cuando lo que necesito es que ordene de Menor a Mayor o Viceversa es decir 1,2,10,12, Cualquier ayuda es Bienvenida
 
Checa esta pagina tienen ejemplos de algoritmos de ordenacion:
http://www.studyvb.com/
(Buscalo como SORT )

Revisé los ejemplos, y si aparece el método burbuja con arrays (como el que conozco para c++), voy a ver si lo puedo emplear en arraylist en visual basic net 2008, Muchas gracias por la ayuda
 
Nunca mencionaste que eran numeros los que querias ordenar :D, para ordenar con numeros debes convertir a valor numerico con Convert.toint32(objeto) la propiedad text del item.

listaa.Add(CONVERT.TOINT32(.GetItemText(.Items(q))))

y con eso solucionas tu problema, como está actualmente, lo ordena como lo que es... TEXTO ya que usaste el GETITEMTEXT para agregar el valor en la lista.

Saludos
 
Nunca mencionaste que eran numeros los que querias ordenar :D, para ordenar con numeros debes convertir a valor numerico con Convert.toint32(objeto) la propiedad text del item.

listaa.Add(CONVERT.TOINT32(.GetItemText(.Items(q))))

y con eso solucionas tu problema, como está actualmente, lo ordena como lo que es... TEXTO ya que usaste el GETITEMTEXT para agregar el valor en la lista.

Saludos

Tienes razón, nunca mencione que lo que quería ordenar era números, no texto, de todas formas veo que tengo que leer mucho y agradecerte de nuevo toda tu valiosa ayuda.
Te comentó modifique lo que mencionas y funciona a la perfección, sólo que no entiendo porque restas -2, en el primer ciclo y en el segundo -1, En C, yo lo hacía restando -1 nada más.
 
Lista original {1,2,3,4,5,6,7,8,9,10}
alto=10, Posiciones del 0 al 9

For a = 0 To alto-2 Step +1
For b = a+1 To alto-1 Step +1
If listaa.Item(a) > listaa.Item(b) Then
aux = listaa.Item(a)
listaa.Item(a) = listaa.Item(b)
listaa.Item(b) = aux
End If
Next
Next


En el Primer ciclo vamos a recorrer las posiciones del 0 al 8 (alto-2 = 10-2 = 8) {1,2,3,4,5,6,7,8,9}
y en el segundo hasta la posicion 9 (alto-1 = 10-1 = 9)

Asi, en la primera vuelta el segundo ciclo va a ir de la posicion 1 a la 9 (a+1 = 0+1 = 1):(alto-1 = 10-1 = 9)
{2,3,4,5,6,7,8,9,10}

Clear??
 
Lista original {1,2,3,4,5,6,7,8,9,10}
alto=10, Posiciones del 0 al 9

For a = 0 To alto-2 Step +1
For b = a+1 To alto-1 Step +1
If listaa.Item(a) > listaa.Item(b) Then
aux = listaa.Item(a)
listaa.Item(a) = listaa.Item(b)
listaa.Item(b) = aux
End If
Next
Next


En el Primer ciclo vamos a recorrer las posiciones del 0 al 8 (alto-2 = 10-2 = 8) {1,2,3,4,5,6,7,8,9}
y en el segundo hasta la posicion 9 (alto-1 = 10-1 = 9)

Asi, en la primera vuelta el segundo ciclo va a ir de la posicion 1 a la 9 (a+1 = 0+1 = 1):(alto-1 = 10-1 = 9)
{2,3,4,5,6,7,8,9,10}

Clear??
Excelente, más claro ni el agua, Gracias, con eso creo no se me olvidará el recorrido de arreglos y el ordenamiento con burbuja
 
Volver
Arriba