Page 1 of 1

Conocer las veces que una cadena es parte de una matriz

Posted: Tue Jul 21, 2020 2:47 am
by nanoespinoza
Estimados:

Tengo el siguiente problema y no le encuentro una solución adecuada con una función propia de FW o xHarbour (quizá una combinación entre AEval y AScan sea lo adecuado, pero no he podido dar con la sintaxis adecuada). Lo resumo: si tengo una matriz con varios elementos y quiero conocer la cantidad de veces que un valor especifico se encuentra contenido en la matriz.

Ejemplo_
aMatriz:={"XYZ", "ABC", "ABC", "DEF", "D12345", "ABC", "UVW"", "DEF"}

¿Como hago para conocer la cantidad de veces que la cadena "ABC" está repetida en aMatriz?

Saludos

Fernando Espinoza A.

Re: Conocer las veces que una cadena es parte de una matriz

Posted: Tue Jul 21, 2020 4:03 am
by Antonio Linares

Code: Select all

function Main()

   local aMatriz := { "XYZ", "ABC", "ABC", "DEF", "D12345", "ABC", "UVW", "DEF" }
   local n := 0    
   
   AEval( aMatriz, { | c | If( c == "ABC", n++,) } )
   
   ? n
   
return nil

Re: Conocer las veces que una cadena es parte de una matriz

Posted: Tue Jul 21, 2020 4:38 am
by nanoespinoza
Estimado Antonio

Perfecto, muchas gracias.

Saludos

Re: Conocer las veces que una cadena es parte de una matriz

Posted: Tue Jul 21, 2020 11:26 am
by cnavarro
Otra posibilidad

Code: Select all

#include "Fivewin.ch"

function Main()

   local aMatriz := { "XYZ", "ABC", "ABC", "DEF", "D12345", "ABC", "UVW", "DEF" }
   local n := 0    
   ? n := NumAt( "ABC", FW_ArrayAsList( aMatriz, ";" ) )
   
return nil