Go Down

### Topic: Get array value index by searching value (Read 8869 times)previous topic - next topic

#### niekwoo10

##### Sep 01, 2012, 07:18 pm
In a project i'm making, i need to use arrays. Now i have a question:
Is there a way to find a value's index just by searching for the value?

For example:

int arrayVals[] = {2, 4, -8, 3, 5, 1};

Now for example when i input "-8" into a function, i need it to return the index of -8, which is 2. How would i go about doing that?

Oh and how can i get the length of an array?

#### WizenedEE

#1
##### Sep 01, 2012, 07:26 pm
To do inverse lookup you need to traverse the array
Code: [Select]
`const int arysz = 6;int ary[arysz] = {4, 32, 6, 2, -1, 5}int wantedval = -1;int wantedpos;for (int i=0; i<arysz; i++) {   if (wantedval = ary[i]) {     wantedpos = i;     break;   }}`
If they're in order, you can also do a binary search (google it)

For finding array length, the best method is to use the above method and store a separate variable for the length. However, this works, too
Code: [Select]
`int ary[12];int len = sizeof(ary)/sizeof(ary[0])`

#### niekwoo10

#2
##### Sep 01, 2012, 07:30 pm

To do inverse lookup you need to traverse the array
-code-

Thank you. Now what happens when i search for a value that isn't in the array?

#### Grumpy_Mike

#3
##### Sep 01, 2012, 07:38 pm
Then wantedval = -1 and you know you didn't find it.
Note make the initial value of wantedval outside the range of numbers you are expecting in the array.

#### niekwoo10

#4
##### Sep 01, 2012, 07:42 pm
Will this code work if i expand the array during execution of the code?

#### AWOL

#5
##### Sep 01, 2012, 07:42 pm
If your array is ordered, you can shorten search times by doing a binary search.
"Pete, it's a fool looks for logic in the chambers of the human heart." Ulysses Everett McGill.
Do not send technical questions via personal messaging - they will be ignored.

#### niekwoo10

#6
##### Sep 01, 2012, 07:44 pm

If your array is ordered, you can shorten search times by doing a binary search.

It's not ordered.

#### Grumpy_Mike

#7
##### Sep 01, 2012, 07:49 pm
Quote
Will this code work if i expand the array during execution of the code?

You can't do that, the array size is fixed by:-
Code: [Select]
`int ary[arysz] = {4, 32, 6, 2, -1, 5}`
You can't expand this once it has been set.

Go Up

Please enter a valid email to subscribe

### Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy