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.
//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
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
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: No registered users and 28 guests