FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Transponer un array
Posts: 1279
Joined: Mon Feb 06, 2006 04:28 PM
Transponer un array
Posted: Wed Apr 12, 2023 01:56 PM
Me gustaría saber como se puede de una manera sencilla transponer un array.
Estuve probando con la clase FW_Matrix pero no la he entendido bien porque no logro transponerlo.
Seguramente se debe a mi torpeza. :roll:
Saludos/Regards,

José Murugosa

"Los errores en programación, siempre están entre la silla, el teclado y la IA!!"
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Transponer un array
Posted: Wed Apr 12, 2023 03:06 PM
Jose, busca en el foro ArrTranspose
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 851
Joined: Sun Nov 09, 2014 05:01 PM
Re: Transponer un array
Posted: Wed Apr 12, 2023 03:13 PM

Hola Jose,

Si lo que deseas es hacer una copia exacta del arreglo, yo uso aClone()

aArray1:=aClone(aArray2)

Espero que se lo que necesitas.

"Los errores en programación, siempre están entre la silla y el teclado..."



Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin



Carora, Estado Lara, Venezuela.
Posts: 1279
Joined: Mon Feb 06, 2006 04:28 PM
Re: Transponer un array
Posted: Wed Apr 12, 2023 06:32 PM
Lo he resuelto así:
Code (fw): Select all Collapse
//Permite trasponer cualquier array o matriz dado.
FUNCTION TransponerMatriz( aDatos )
     local aRet:={}, nRow, nCol, nRows, nCols
     nRows := Len( aDatos )
     nCols := Len( aDatos[1] )
     aRet  := Array( nCols, nRows ) //array en blanco con estructura transpuesta.

     FOR nRow = 1 to nRows
          FOR nCol = 1 to nCols
               aRet[ nCol, nRow ] := aDatos[ nRow, nCol ]
          NEXT nCol
     NEXT nRow

return aRet
Gracias a todos por sus comentarios.
Saludos/Regards,

José Murugosa

"Los errores en programación, siempre están entre la silla, el teclado y la IA!!"
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: Transponer un array
Posted: Thu Apr 13, 2023 10:02 AM
Jose:
Existe la funcion ArrTranspose
(Sacado de Wiki de fivewin)
Code (fw): Select all Collapse
function ArrTranspose( aArray, lSquare )
local nRows, nCols, nRow, nCol, nWidth
   local aNew

   DEFAULT lSquare := .f.

   nRows          := Len( aArray )
   if lSquare
      nCols       := Len( aArray[ 1 ] )
   else
      nCols       := 1
      for nRow := 1 to nRows
         if ValType( aArray[ nRow ] ) == 'A'
            nCols    := Max( nCols, Len( aArray[ nRow ] ) )
         endif
      next
   endif

   aNew           := Array( nCols, nRows )
   for nRow := 1 to nRows
      if ValType( aArray[ nRow ] ) == 'A'
         nWidth  := Len( aArray[ nRow ] )
         for nCol := 1 to nWidth
            aNew[ nCol, nRow ]   := aArray[ nRow, nCol ]
         next
      else
         aNew[ 1, nRow ]      := aArray[ nRow ]
      endif
   next

return aNew
Posts: 1279
Joined: Mon Feb 06, 2006 04:28 PM
Re: Transponer un array
Posted: Thu Apr 13, 2023 11:53 AM
Muchas Gracias César!!!

Parece que refabriqué la rueda :D

La verdad desconocía esta función.

Eres muy Amable, Saludos!!
Saludos/Regards,

José Murugosa

"Los errores en programación, siempre están entre la silla, el teclado y la IA!!"

Continue the discussion