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
```

Forum for Xojo Programming Language and IDE. Copyright © 2024 Xojo, Inc.