FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour buscar minimo valor en un arreglo bidimensional
Posts: 162
Joined: Wed Feb 22, 2017 02:19 AM
buscar minimo valor en un arreglo bidimensional
Posted: Sat Mar 31, 2018 04:49 AM
Estimados listeros saluditos a la distancia.

1- Miren tengo un arreglo bidimensional.
2 Necesito saber el valor minimo de aParadasvue[Puntero,4]
3 lo que hago es calcular la distancia entre dos puntos por GPS
4 aParadasvue[Puntero,4] almacena la distancia procesada // iIda



Algo asi va..

oP:Cuantoshay:=oP:QueryPara:Reccount()

Local aParadasida[oP:Cuantoshay,4]
Local aParadasvue[oP:Cuantoshay,4]


do while .t.
Puntero:=oP:QueryPara:recno()
aParadasida[Puntero,1]:=oP:QueryPara:FieldGet("latIDA")
aParadasida[Puntero,2]:=oP:QueryPara:FieldGet("lonIDA")
aParadasida[Puntero,3]:=oP:QueryPara:FieldGet("nlargo")
aParadasida[Puntero,4]:=calculadistancia()

aParadasvue[Puntero,1]:=oP:QueryPara:FieldGet("latIDA")
aParadasvue[Puntero,2]:=oP:QueryPara:FieldGet("lonIDA")
aParadasvue[Puntero,3]:=oP:QueryPara:FieldGet("nlargo")
aParadasvue[Puntero,4]:=calculadistancia()

oP:QueryPara:skip()
IF oP:QueryPara:Eof()
EXIT
ENDIF
ENDDO

Ok hasta aqui de maravillas proximo paso.

Lat1 := 10.203574
Lng1 := -83.782274

for I = 1 to len(aParadasida)

lat2 :=val(aParadasida[I,1])
lng2 :=val(aParadasida[I,2])

oP:=miDistancia( lat1, lng1, lat2, lng2 ) // calculo la distancia y guardo en la posicion aParadasida[I,4]

aParadasida[I,4]:=oP:mascarca

next

al final la funcion que calcula distancias gracias a:

function miDistancia( lat1, lng1, lat2, lng2 )
**//**Hecho por xmanuel » Dom Ene 21, 2018 7:13 pm
return( acos( sin( dtor( lat1 ) ) * sin( dtor( lat2 ) ) + cos( dtor( lat1 ) ) * cos( dtor( lat2 ) ) * cos( dtor( lng1 ) - dtor( lng2 ) ) ) * 6371 )

RETURN

A este punto perfecto, a hora debo de buscar a menor distancia garabada en aParadasida[I,4] del arreglo..

Gracias
Regards.
S.I.T.U.
Sistemas Inteligentes de transporte urbano
http://www.situcr.com
oscarchacon@Situcr.com
Desarrollos BA4/B4j androide
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: buscar minimo valor en un arreglo bidimensional
Posted: Sat Mar 31, 2018 01:51 PM
Code (fw): Select all Collapse
Lat1: = 10.203574 
Lng1: = -83.782274 


aMin  := Array( 2 )

for I = 1 to len (aParadasida) 

   lat2: = val (aParadasida[I, 1]) 
   lng2: = val (aParadasida[I, 2]) 

   oP:mascarca: = miDistance (lat1 , lng1, lat2, lng2) // calculate the distance and save in the position aParadasida [I, 4]

   aParadasida [I, 4]: = oP:mascarca 

   if aMin[ 2 ] == nil .or. aMin[ 2 ] > oP:mascarca
      aMin  := { i, oP:mascarca }
   endif

next 

// shotest distance is aMin[ 2 ]
Regards



G. N. Rao.

Hyderabad, India
Posts: 162
Joined: Wed Feb 22, 2017 02:19 AM
Re: buscar minimo valor en un arreglo bidimensional
Posted: Sun Apr 01, 2018 02:41 AM

Thanks nageswaragunupudi, works great.
have good one
...

Regards.
S.I.T.U.
Sistemas Inteligentes de transporte urbano
http://www.situcr.com
oscarchacon@Situcr.com
Desarrollos BA4/B4j androide

Continue the discussion