Autor Tema: Ayuda matematica por favor para formatear una matriz o array!!  (Leído 3415 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
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!

Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

czar9

  • Kilobyte
  • **
  • Mensajes: 64
  • Reputación: +4/-4
    • Ver Perfil
Re:Ayuda matematica por favor para formatear una matriz o array!!
« Respuesta #1 en: Julio 03, 2011, 11:17:33 pm »
Los 00 van al azar?

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Ayuda matematica por favor para formatear una matriz o array!!
« Respuesta #2 en: Julio 03, 2011, 11:56:48 pm »
No son solo para rellenar los espacios vacios en realidad
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

czar9

  • Kilobyte
  • **
  • Mensajes: 64
  • Reputación: +4/-4
    • Ver Perfil
Re:Ayuda matematica por favor para formatear una matriz o array!!
« Respuesta #3 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 ?

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Ayuda matematica por favor para formatear una matriz o array!!
« Respuesta #4 en: Julio 05, 2011, 07:15:50 am »
Si amigo asi es como lo planteas!! alguna idea?
« última modificación: Julio 05, 2011, 07:44:27 am por xkiz ™ »
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

LeandroA

  • Administrador
  • Petabyte
  • *****
  • Mensajes: 1128
  • Reputación: +151/-8
    • Ver Perfil
Re:Ayuda matematica por favor para formatear una matriz o array!!
« Respuesta #5 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

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Ayuda matematica por favor para formatear una matriz o array!!
« Respuesta #6 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!!

Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.