none
Indice de array bidimensional RRS feed

  • 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 !!!!!!!!!!!

    jueves, 19 de diciembre de 2019 17:47

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

     

    jueves, 19 de diciembre de 2019 18:31
  • 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

    jueves, 19 de diciembre de 2019 22:35
  • 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.

    jueves, 19 de diciembre de 2019 21:34

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

     

    jueves, 19 de diciembre de 2019 18:31
  • 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.

    jueves, 19 de diciembre de 2019 21:34
  • 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

    jueves, 19 de diciembre de 2019 22:35
  • Gracias Tigre Pablito.

    Era eso exactamente lo que buscaba.

    Saludos a todos.

    viernes, 20 de diciembre de 2019 10:15