Principales respuestas
Indice de array bidimensional

Pregunta
-
Saludos a todos.
Tengo una matriz de enteros de dos dimensiones. Quiero conocer cual es el índice que ocupan dos elementos determinados.
Supongamos que:
public static int [,] mimatriz = new int[10,2];
y conociendo los dos elementos de la fila, supongamos que sean por ejemplo 1 y 5, quiero conocer su índice.
He probado con:
var index = Array.FindIndex(mimatriz, x => x.Contains( "1","5");
var index = Array.FindIndex(mimatriz row => row.( "1","5");
en ambos casos me da error.
Seríais tan amables de echarme una ayudita. GRACIAS.
Otro detalle:
Se podría utilizar alguna clase y escribir un método que busque el índice? De ser posible, cómo se harías?
Nuevamente, GRACIAS.
Cordiales saludos a toda la comunidad !!!!!!!!!!!
Respuestas
-
Hola Georgina
Si tenes una matriz declarada como
int[,] mimatriz = new int[10, 2];
y queres acceder al elemento cuyos índices son 1 y 5, es así
int num = mimatriz[1, 5];
Si lo que queres es conocer los índices para un valor del array (este código encuentra el primero, podría repetirse)
int a, b;
for (a = 0; a < mimatriz.GetLength(0); a++) for (b = 0; b < mimatriz.GetLength(1); b++) if (mimatriz[a, b] == valor) break; // ahora a es el 1er índice y b el 2do de la 1er posición de valor en la matriz
Saludos
Pablo
- Propuesto como respuesta Diana AcuñaModerator jueves, 19 de diciembre de 2019 18:51
- Marcado como respuesta Pablo RubioModerator jueves, 26 de diciembre de 2019 16:43
-
En ese caso el índice sería 2, porque los índices de listas y matrices comienzan en 0
Si lo que queres es buscar la posición de una matriz (de una dimensión) dentro de la matriz de 2 dimensiones ...
int a; int[] valor = new int[] { 5, 6 }; // podes cambiar esto por lo que sea for (a = 0; a < mimatriz.GetLength(0); a++) if (mimatriz[a, 0] == valor[0] && mimatriz[a, 1] == valor[1]) break; // a vale el índice; pero si a vale mimatriz.GetLength(0) entonces no existe { 5, 6 } en este caso ... mimatriz.GetLength(0) es la longitud de la 1er dimensión, 4 en este caso
- Marcado como respuesta Pablo RubioModerator jueves, 26 de diciembre de 2019 16:43
-
Gracias por la respuesta Pablo. Pero no es exactamente lo que yo busco.
Supongamos este ejemplo de la página de matrices multidimensionales de microsoft:
int[,] array2Da = new int[4, 2] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
Lo que quiero es introducir los valores, por ejemplo, 5 y 6 y obtener su índice.
En el caso del ejemplo, tendría como índice el valor de 3, porque es la tercera fila.
Sería algo como recorrer todo el array y donde encuentre los valores 5,6 que nos devuelva el índice.
Eso como lo hago? GRACIAS.
- Marcado como respuesta Pablo RubioModerator jueves, 26 de diciembre de 2019 16:43
Todas las respuestas
-
Hola Georgina
Si tenes una matriz declarada como
int[,] mimatriz = new int[10, 2];
y queres acceder al elemento cuyos índices son 1 y 5, es así
int num = mimatriz[1, 5];
Si lo que queres es conocer los índices para un valor del array (este código encuentra el primero, podría repetirse)
int a, b;
for (a = 0; a < mimatriz.GetLength(0); a++) for (b = 0; b < mimatriz.GetLength(1); b++) if (mimatriz[a, b] == valor) break; // ahora a es el 1er índice y b el 2do de la 1er posición de valor en la matriz
Saludos
Pablo
- Propuesto como respuesta Diana AcuñaModerator jueves, 19 de diciembre de 2019 18:51
- Marcado como respuesta Pablo RubioModerator jueves, 26 de diciembre de 2019 16:43
-
Gracias por la respuesta Pablo. Pero no es exactamente lo que yo busco.
Supongamos este ejemplo de la página de matrices multidimensionales de microsoft:
int[,] array2Da = new int[4, 2] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
Lo que quiero es introducir los valores, por ejemplo, 5 y 6 y obtener su índice.
En el caso del ejemplo, tendría como índice el valor de 3, porque es la tercera fila.
Sería algo como recorrer todo el array y donde encuentre los valores 5,6 que nos devuelva el índice.
Eso como lo hago? GRACIAS.
- Marcado como respuesta Pablo RubioModerator jueves, 26 de diciembre de 2019 16:43
-
En ese caso el índice sería 2, porque los índices de listas y matrices comienzan en 0
Si lo que queres es buscar la posición de una matriz (de una dimensión) dentro de la matriz de 2 dimensiones ...
int a; int[] valor = new int[] { 5, 6 }; // podes cambiar esto por lo que sea for (a = 0; a < mimatriz.GetLength(0); a++) if (mimatriz[a, 0] == valor[0] && mimatriz[a, 1] == valor[1]) break; // a vale el índice; pero si a vale mimatriz.GetLength(0) entonces no existe { 5, 6 } en este caso ... mimatriz.GetLength(0) es la longitud de la 1er dimensión, 4 en este caso
- Marcado como respuesta Pablo RubioModerator jueves, 26 de diciembre de 2019 16:43
-