is there a short cut or easy way to count the number of non-zero elements in an array of doubles?
thanks
bill
is there a short cut or easy way to count the number of non-zero elements in an array of doubles?
thanks
bill
No, you’d have to cycle through them and count.
dim cnt as integer
for each d as double in doublesArr
if d <> 0.0 then cnt = cnt + 1
next d
Should be pretty fast.
Yeah, I knew to do that, I was just hoping there was a one line function that would return the number of positive elements…
The Xojo language is extensible in some ways, so you could write your own using the Extends keyword:
function CountPositives extends dArray() as double as integer
dim cnt as integer
for each d as double in dArray
if d >0 then cnt=cnt+1
next
return cnt
end function
You can then use the function in your code using dot notation
dim d() as double
dim n as integer
n = d.CountPositives
This code might be faster:
dim cnt as integer
dim thisIndex as integer = doublesArr.IndexOf( 0. )
while thisIndex <> -1
cnt = cnt + 1
if thisIndex = doublesArr.Ubound then
exit
else
thisIndex = doublesArr.IndexOf( 0., thisIndex + 1 )
end if
wend
cnt = doublesArr.Ubound - cnt + 1