Visual Basic Foro

Programación => Visual Basic 6 => Mensaje iniciado por: Bazooka en Julio 03, 2011, 07:33:10 pm

Título: Ayuda matematica por favor para formatear una matriz o array!!
Publicado por: Bazooka en Julio 03, 2011, 07:33:10 pm
Hola gente tengo una serie de arrays con este formato :
 
5,7,15,22,23,30,37,47,57,58,60,64,78,84,88

Y necesitaría distribuir esos 15 numeros  en una cuadricula de 3 filas por  9 columnas. Ahora la distribucion deberia ser uniforme ya que son 15 numeros que se distribuirian en  27 cuadros (9 filas X 3 columnas).
El orden de los números  es relevante en forma ascendente y de izquierda a derecha debería ser de menor a mayor 
aqui va un ejemplo de como podria quedar la combinación anterior (5,7,15,22,23,30,37,47,57,58,60,64,78,84,88) (el cero representa un espacio vacio))

|00|15|22|00|00|57|00|00|84|
|05|00|23|30|47|00|60|78|00|
|07|00|00|37|00|58|64|00|88|

Sería perfecto si fuese adpatable a una matriz no fija por que en este caso son 15 números pero podrían llegar a ser 12 o 18  y la cuadricula tambien podria variar tener 3 filas y 8 columnas etc. etc.

Muy agradecido a quien me pueda ayudar yo estoy haciendo mis intentos que no los pongo aca por que son bastantes malos!!
y reamente esto me complicaaaaaaaaaa!

Título: Re:Ayuda matematica por favor para formatear una matriz o array!!
Publicado por: czar9 en Julio 03, 2011, 11:17:33 pm
Los 00 van al azar?
Título: Re:Ayuda matematica por favor para formatear una matriz o array!!
Publicado por: Bazooka en Julio 03, 2011, 11:56:48 pm
No son solo para rellenar los espacios vacios en realidad
Título: Re:Ayuda matematica por favor para formatear una matriz o array!!
Publicado por: czar9 en Julio 04, 2011, 03:10:36 pm
entonces los N numeros los distribuyes en posiciones al azar siempre y cuando mantenga  el orden ascendente de arriba-abajo e izquierda-derecha? y los que se quedan sin nada pones 00 ?
Título: Re:Ayuda matematica por favor para formatear una matriz o array!!
Publicado por: Bazooka en Julio 05, 2011, 07:15:50 am
Si amigo asi es como lo planteas!! alguna idea?
Título: Re:Ayuda matematica por favor para formatear una matriz o array!!
Publicado por: LeandroA en Julio 05, 2011, 07:52:03 pm
Hola te paso un ejemplo rapido que por supuesto podria ser un poco mas optimo.

Código: [Seleccionar]
Option Explicit

Private Sub Form_Load()
    Dim ArrNumbers As Variant
    Dim TheMatrix() As String
    Dim i As Long, j As Long
    Dim Rows As Long, Columns As Long
   
   
    Rows = 3
    Columns = 9
    ArrNumbers = Split("5,7,15,22,23,30,37,47,57,58,60,64,78,84,88", ",")
   
    GetRndMatrix ArrNumbers, Rows, Columns, TheMatrix
   
    For j = 0 To Rows - 1
        For i = 0 To Columns - 1
            Debug.Print TheMatrix(j, i) & "|";
        Next
        Debug.Print
    Next
End Sub



Private Function GetRndMatrix(ArrNumbers As Variant, ByVal Rows As Long, ByVal Columns As Long, ByRef OutMatrix() As String) As Boolean
    Dim UBoundNum As Long
    Dim UBoundMatrix As Long
    Dim ArrFlags() As Byte
    Dim lCount As Long
    Dim lPos As Long
    Dim i As Long
    Dim j As Long
   
    UBoundNum = UBound(ArrNumbers)
    UBoundMatrix = (Rows * Columns) - 1
   
    If UBoundNum > UBoundMatrix Then Exit Function
   
    ReDim OutMatrix(Rows - 1, Columns - 1)
   
   
   
    ReDim ArrFlags(UBoundMatrix)
   
    Randomize
   
    Do
        lPos = CLng(UBoundMatrix * Rnd)
        If ArrFlags(lPos) = 0 Then
             ArrFlags(lPos) = 1
             lCount = lCount + 1
             
        End If
        If lCount = UBoundNum Then Exit Do
    Loop
   
    lPos = 0
    lCount = 0
   
    For i = 0 To Columns - 1
        For j = 0 To Rows - 1
            If ArrFlags(lPos) = 1 Then
                OutMatrix(j, i) = Format(ArrNumbers(lCount), "00")
                lCount = lCount + 1
            Else
                OutMatrix(j, i) = "00"
            End If
            lPos = lPos + 1
        Next
    Next
   
    GetRndMatrix = True

End Function
Título: Re:Ayuda matematica por favor para formatear una matriz o array!!
Publicado por: Bazooka en Julio 06, 2011, 11:19:10 am
Buenisismo LEadndro !!! re capo sos che! funciona! ahora me pongo a estudiarla y ver como la puedo adapatar para optimizarla!!
abrazos!!