1
« en: Lunes 5 de Abril de 2010, 18:46 »
Hola, tengo que hacer una aplicación en Visual Basic que permita ordenar las columnas de una matriz con un
número de filas y un número de columnas variable, el caso es que me lió mucho.
Mi código es:
Public Class Formulario
Dim X(,) As Double 'X es un array bidimensional dinámico
Dim dato() As Double 'Vector dinámico
Dim Fil, Col As Integer 'Variables para almacenar las dimensiones de X
Private Sub Formulario_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub ButtonDatos_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ButtonDatos.Click
Dim i, j As Integer, Mensaje As String
Dim aux As Integer
Explica.Text = "Tendrá que especificar el número de filas y de columnas"
Fil = InputBox("Introduzca el número de filas", "Dimensiones de la matriz")
Col = InputBox("Introduzca el número de columnas", "Dimensiones de la matriz")
'Las dim de la matriz empiezan a contar desde 0
'redimensionamos la matriz X hasta Fil-1 y Col-1
ReDim X(Fil - 1, Col - 1)
Explica.Text = "Ahora se le piden los elementos de la matriz"
'Pide los elementos de la matriz X usando InputBox
For i = 0 To Fil - 1
For j = 0 To Col - 1
Mensaje = "Introduzca X(" & i & "," & j & ")"
X(i, j) = InputBox(Mensaje, "Elementos de la matriz")
Next j
Next i
ReDim dato(Col - 1)
For j = 0 To Col - 1
For i = 0 To Fil - 1
If dato(j) > dato(j + 1) Then
aux = dato(j)
dato(j + 1) = dato(j)
dato(j) = aux
End If
Next i
Next j
'Se imprimen los resultados en el control Resultado
Etiqueta2.Visible = True
Resultado.Visible = True
For j = 0 To Col - 1
Resultado.Text = Resultado.Text & vbCrLf & dato(j)
'vbCrLf es un salto de linea
Next j
Explica.Text = "Este programa ordena matrices por columnas. Para introducir los datos pulse en el botón DATOS"
End Sub
Private Sub ButtonSalir_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ButtonSalir.Click
End
End Sub
End Class
LO que pretendo hacer es para ordenar las columnas de la matriz :
Almacenar el contenido de una columna en un vector(dato(j))
Ordenar mediante un bucle ese vector
Regresar el contenido ordenado del vector a la columna de la matriz
Pero al intentar almacenar los datos de las columnas de la matriz en el vector no lo hace, ahí se para, no recorre j no hace nada se bloquea el programa.