How to find the position of a number in an array?
3.945 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Arnab Pal
el 15 de Feb. de 2018
Comentada: Walter Roberson
el 20 de Jul. de 2022
If I have a vector, a = [7 8 8 2 5 6], how do I compute the positions of the value 8?
I expect 2 and 3 or (1,2) and (1,3).
0 comentarios
Respuesta aceptada
Walter Roberson
el 15 de Feb. de 2018
Editada: MathWorks Support Team
el 27 de Feb. de 2020
You can use the “find” function to return the positions corresponding to an array element value. For example:
a = [7 8 8 2 5 6];
linearIndices = find(a==8)
linearIndices =
2 3
To get the row and column indices separately, use:
[row,col] = find(a==8)
row =
1 1
col =
2 3
If you only need the position of one occurrence, you could use the syntax “find(a==8,1)”. You can also specify a direction if you specifically want the first or last occurrence, such as “find(a==8,1,’first’). For more information on these options, see “find”.
2 comentarios
Walter Roberson
el 20 de Jul. de 2022
find() can never return 0. Perhaps you are looking at ans for a different operation?
Más respuestas (4)
Bhagyesh Shiyani
el 5 de Dic. de 2019
what if i want both 8 positions, any code?
2 comentarios
Walter Roberson
el 15 de En. de 2020
This will not return value and index, it will return row and column numbers.
Sorne Duong
el 21 de Jul. de 2021
a = 1, 3, 6, 9, 10, 15
We know the fourth value is 9, but how to find the fourth value in MATLAB?
4 comentarios
Nilesh Kumar Bibhuti
el 15 de Oct. de 2021
Editada: Walter Roberson
el 15 de Oct. de 2021
BRO , THIS WILL GIVE U THE DESIRED OUTPUT . HAPPY CODING :)
#include <stdio.h>
#define MAX_SIZE 100 // Maximum array size
int main()
{
int arr[MAX_SIZE] ,brr[MAX_SIZE] ;
int size, i, toSearch, found ,k=0;
/* Input size of array */
printf("Enter size of array: ");
scanf("%d", &size);
/* Input elements of array */
printf("Enter elements in array: ");
for (i = 0; i < size; i++)
{
scanf("%d", &arr[i]);
}
printf("\nEnter element to search: ");
scanf("%d", &toSearch);
for (i = 0; i < size; i++)
{
if (arr[i] == toSearch)
{
brr[k] = i+1 ;
printf("%d ",brr[k]);
k++ ;
}
}
return 0;
}
1 comentario
Walter Roberson
el 15 de Oct. de 2021
In C, int size should really be size_t size and your scanf() should be using %lu instead of %d . i and k should also be size_t
You should be checking the return status of each scanf() call .
Also
int main()
should be
int main(void)
unless you are using K&R C from before C was standardized.
The user is expecting the positions to be returned, rather than displayed.
You probably shouldn't be assuming integer for the array, but that would be an acceptable limitation if specifically documented.
You do not use or initialize found.
Ver también
Categorías
Más información sobre Whos en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!