Page 1 of 1

Sumar o combinar matrices/arreglos

Posted: Thu May 31, 2018 3:08 pm
by Adolfo
Saludos fivewinners

Tengo los siguientes arreglos
Arr1
a , b , c
d , e , f
g , h , i

Arr2
1 , 2, 3
4 , 5, 6
7 , 8, 9

y debo obtener este resultado
aRes
a , b, c, 1, 2, 3
d , e, f, 4, 5, 6
g , h, i, 7, 8, 9


Ambos son creados dinamicamente despues de realizar unos selects sobre mysql. Como no hay relacion entre las tablas no puedo hacer un select con join, mi solucion es la "union" de los arreglos en forma externa.
Tengo acceso a las lineas por separado,

Intente lo siguiente
For x=1 to nLineas
Aadd(aRes, Arr1_aLinea[x], Arr2_aLinea[x]
// Aadd(aRes, {a,b,c},{1,2,3})
Next
Obviamente sin el resultado esperado, en algun momento varian las lineas y las columnas. Ej Un resultado real es ARR1[1021,3] y ARR2[1021,6] y otra mas sencilla Arr1[14,2] y ARR2[14.3]

Cualquier idea sera bienvenida, con la cabeza caliente ni veo el bosque de tanto arbol cerca.

Saludos
Desde Chile
Adolfo

Re: Sumar o combinar matrices/arreglos

Posted: Thu May 31, 2018 3:26 pm
by cnavarro
Paso a paso, creo que funciona para lo que necesitas

Code: Select all


   local aTabla1 := { { "a", "b", "c" }, { "d", "e", "f" }, { "g", "h", "i" } }
   local aTabla2 := { { "1", "2", "3" }, { "4", "5", "6" }, { "7", "8", "9" } }
   local aTmp1   := ArrTranspose( aTabla1 )
   local aTmp2   := ArrTranspose( aTabla2 )
   AEVal( aTmp2, { | a | AAdd( aTmp1, a ) } )
   aTabla1       := ArrTranspose( aTmp1 )
   XBrowse( aTabla1 )

 

Re: Sumar o combinar matrices/arreglos

Posted: Thu May 31, 2018 3:36 pm
by Armando
Adolfo:

No te sirve la clausula UNION de MySQL, recuerda, no es lo mismo JOIN que UNION.

Saludos

Re: Sumar o combinar matrices/arreglos

Posted: Thu May 31, 2018 3:47 pm
by Adolfo
Gracias.

Cristobal probare tu solucion.
Armando, no sirve UNION, me equivoque al describir lo que he probado, no existe ninguna relacion entre las tablas, hasta habia pensado en poner campos para generar el resultado, pero queria probar si solo con los arrays, que ademas utilizo en otras partes del modulo, era mas que suficiente.

Les comentare los resultados.

A proposito, ni idea de la funcion ARRTRANSPOSE(), es de HARBOUR, Fivewin?


Saludos.
Desde Chile.
Adolfo

Re: Sumar o combinar matrices/arreglos

Posted: Thu May 31, 2018 4:06 pm
by Armando
Adolfo:

También desde Clipper existe la función AINS(), te muestro que tengo a la mano:

Code: Select all

tabla := {"FRANCISCO","FELIPE","MANUELA"}
AINS(tabla,2)
tabla[2] := "ANTONIO"

El resultado sería:

tabla[1] = "FRANCISCO"
tabla[2] = "ANTONIO"
tabla[3] = "FELIPE"
tabla[4] = "MANUELA"
 
Saludos

Re: Sumar o combinar matrices/arreglos

Posted: Thu May 31, 2018 5:21 pm
by hectorpapiri
a1 := {1,2,3}
a2 := {3,4,5}
a1 := additem(a1, a2)

FUNCTION AddItems(aArray, aItems)
local nOrigSize := Len(aArray)
ASize(aArray, nOrigSize + Len(aItems))
AEval(aItems, {|uItem, nPos| aArray[nOrigSize + nPos] := uItem} )
RETURN aArray

Saludos

Re: Sumar o combinar matrices/arreglos

Posted: Thu May 31, 2018 5:25 pm
by Armando
Adolfo:

Ya entrados en gastos :D , también tienes la función AADD()

Como ves por opciones no paramos.

Saludos

Re: Sumar o combinar matrices/arreglos

Posted: Fri Jun 01, 2018 7:07 am
by nageswaragunupudi

Code: Select all

aRes := Array( Len( aArr1 ) )
AEval( aArr1, { |a,i| aRes[ i ] := AMERGE( a, aArr2[ i ] ) } )