Foros del Web » Programación para mayores de 30 ;) » .NET »

[B]Metodo burbuja de VB clasico a .Net[/B]

Estas en el tema de [B]Metodo burbuja de VB clasico a .Net[/B] en el foro de .NET en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 07/02/2010, 03:46
 
Fecha de Ingreso: febrero-2010
Mensajes: 47
Antigüedad: 14 años, 2 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.
  #2 (permalink)  
Antiguo 07/02/2010, 08:06
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: [B]Metodo burbuja de VB clasico a .Net[/B]

En realidad, TheCarmen, la cosa es que el método de ordenamiento de burbuja, o cualquier otro, en VB.Net se volvió innecesario como programación (sólo sirve como curiosidad académica o didáctica) desde el momento en que se implementó el método de clase Array.Sort(arrayObject), que precisamente realiza la tarea partiendo de un array cargado.

En tu caso, suponiendo un TextBox multilínea, ordenarlo implicaría algo así, de querer hacerlo en tres líneas:
Código vb.Net:
Ver original
  1. Dim oStr() As String = Me.TextBox1.Text.Split(vbCr)
  2.         Array.Sort(oStr)
  3.         TextBox1.Text = String.Join(vbCr, oStr)
Esto funciona para un conjunto de valores de cadena (alfanuméricos), pero requeriría un ajuste menor para usarlo en valores numéricos.

Lo que tienes que tener en cuenta al pasar a un lenguaje de nivel más alto es que hay muchas cosas que están preimpementadas en el lenguaje... SOlamente tienes que saber cuáles y cómo se usan.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 08/02/2010, 04:12
 
Fecha de Ingreso: febrero-2010
Mensajes: 47
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: [B]Metodo burbuja de VB clasico a .Net[/B]

Me ha gustado mucho tu respuesta. Me ha ayudado bastante. Supongo que todos estos ejercicios me los ponen para detener soltura, pero que luego en la práctica no se resolverían así. A veces me vuelven loca por eso, intentan que resolvamos las cosas de la manera mas complicada y todo para nada porque luego eso no lo implementas en ningún proyecto real. En fin. Voy a ver si puedo hacerlo como me dicen y si no me paso al metodo facil rápido y real... jejejje

Un saludo y muchas gracias por contestar.

Etiquetas: burbuja, vb
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:17.