Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/02/2010, 03:46
TheCarmen
 
Fecha de Ingreso: febrero-2010
Mensajes: 47
Antigüedad: 14 años, 9 meses
Puntos: 1
[B]Metodo burbuja de VB clasico a .Net[/B]

Hola a todos. No domino bien el .Net y me está costando demasiado tiempo trasladar este código a .Net.

Tengo un textArea y debajo un ListBox, en el TextArea meto todos los dígitos que quiera, y estos al pulsar ENTER se bajan a la ListBox. Una vez que tengo los numeros que quiero en dicha ListBox, le quiero dar a un boton que se llama ordenar y que se ordenen ahí mismo, osea, que simplemente al pulsar el boton cambien su posicion hasta quedar ordenados.

Tengo el método de la burbuja realizado en VB clásico, pero en .net al modificarlo me da mil problemas.

CODIGO EN VB CLASICO:

''''''''EN EL BOTON ORDENAR :::

Private Sub cmdSort_Click()
Dim Nums(1 To 30) As Integer
Dim i As Integer
For i = 1 To lstNum.ListCount
lstNum.ListIndex = i - 1
Nums(i) = lstNum.List(lstNum.ListIndex)
Next i
Call ordenar(Nums, lstNum.ListCount)
For i = 1 To lstNum.ListCount
lstNum.ListIndex = i - 1
lstNum.List(lstNum.ListIndex) = Nums(i)
Next i
lstNum.ListIndex = -1
txtInput.SetFocus
End Sub

--------------------------------------------------------------

A PARTE DE ESE FORM DONDE TENGO LA LISTA EL TEXTAREA Y EL BOTON, TAMBIEN TENGO UNMODULO EN EL QUE TENGO ESTO:

Option Explicit

' observar cómo se pasan los arrays como argumentos
Public Sub ordenar(Numbers() As Integer, N As Integer)
' Se ordenan los números enteros de menor a mayor
Dim Temp As Integer
Dim i, j As Integer
For i = 1 To N - 1
For j = i + 1 To N
If Numbers(i) > Numbers(j) Then
Temp = Numbers(i)
Numbers(i) = Numbers(j)
Numbers(j) = Temp
End If
Next j
Next i
' se devuelve el argumento modificado
End Sub


No se como haceerlo en .net porque he probado de mil maneras y nada de nada, os dejo lo que he hecho hasta ahora a ver si me encaminais un poquiyo por favor!!!

*** He cambiado el nombre de la lista, no corresponde a los nombres de arriba.



ESTO ES PARA EL BOTON ORDENAR:

Public Sub btnAsc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAsc.Click

Dim Numeros As Integer
Dim i As Integer
For i = 1 To listaNumero.Items.Count
listaNumero.Items.Count(i - 1)
Numeros(i) = listaNumero.Items(listaNumero.Items.Count)
Next i
Call ordenar(Numeros, listaNumero.Items.Count)
For i = 1 To listaNumero.Items.Count
listaNumero.Items.IndexOf(i - 1)
listaNumero.Items.IndexOf(Numeros(i))
Next i
listaNumero.Items.IndexOf(-1)
txtNumero.Focus()


End Sub


Y ESTO ES LO QUE HE PUESTO EN EL MODULO:

Module Module1

Public Sub ordenar(ByVal Numeros() As Integer, ByVal N As Integer)
' Se ordenan los números enteros de menor a mayor
Dim Temp As Integer
Dim i, j As Integer
For i = 1 To N - 1
For j = i + 1 To N
If Numeros(i) > Numeros(j) Then
Temp = Numeros(i)
Numeros(i) = Numeros(j)
Numeros(j) = Temp
End If
Next j
Next i
End Sub

End Module





Si alguien me puede orientar un poco se lo agradeceria. Un saludo y gracias.