Sumar o combinar matrices/arreglos

Sumar o combinar matrices/arreglos

Postby Adolfo » Thu May 31, 2018 3:08 pm

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
;-) Ji,ji,ji... buena la cosa... "all you need is code"

http://www.xdata.cl - Desarrollo Inteligente
----------
Asus TUF F15, 32GB Ram, 1 TB NVME M.2, 1 TB SSD, GTX 1650
User avatar
Adolfo
 
Posts: 846
Joined: Tue Oct 11, 2005 11:57 am
Location: Chile

Re: Sumar o combinar matrices/arreglos

Postby cnavarro » Thu May 31, 2018 3:26 pm

Paso a paso, creo que funciona para lo que necesitas
Code: Select all  Expand view


   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 )

 
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
User avatar
cnavarro
 
Posts: 6501
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Sumar o combinar matrices/arreglos

Postby Armando » Thu May 31, 2018 3:36 pm

Adolfo:

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

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3070
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Sumar o combinar matrices/arreglos

Postby Adolfo » Thu May 31, 2018 3:47 pm

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
;-) Ji,ji,ji... buena la cosa... "all you need is code"

http://www.xdata.cl - Desarrollo Inteligente
----------
Asus TUF F15, 32GB Ram, 1 TB NVME M.2, 1 TB SSD, GTX 1650
User avatar
Adolfo
 
Posts: 846
Joined: Tue Oct 11, 2005 11:57 am
Location: Chile

Re: Sumar o combinar matrices/arreglos

Postby Armando » Thu May 31, 2018 4:06 pm

Adolfo:

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

Code: Select all  Expand view

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
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3070
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Sumar o combinar matrices/arreglos

Postby hectorpapiri » Thu May 31, 2018 5:21 pm

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
hectorpapiri
 
Posts: 23
Joined: Wed Sep 14, 2016 7:13 pm
Location: Rosario, Santa Fe, Argentina

Re: Sumar o combinar matrices/arreglos

Postby Armando » Thu May 31, 2018 5:25 pm

Adolfo:

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

Como ves por opciones no paramos.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3070
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Sumar o combinar matrices/arreglos

Postby nageswaragunupudi » Fri Jun 01, 2018 7:07 am

Code: Select all  Expand view

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

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10281
Joined: Sun Nov 19, 2006 5:22 am
Location: India


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 19 guests