none
Como crear una matriz dinámica. RRS feed

  • Pregunta

  • Buenas a todos,

    Por favor me podrían informar como crear una matriz dinámica. Explico el contexto. Deseo crear una matriz a medida que va leyendo una linea de archivo se agreguen dinámicamente  filas, las columnas siempre serán fijas ejemplo:

    Linea 1       matriz(0,0)

    Linea 2      matriz(0,1)

    El tamaño de la matriz es indefinido ya que el archivo puede aumentar su lineas al momento de almacenar información.

    Muchas gracias por su ayuda.


    jueves, 20 de abril de 2017 20:49

Respuestas

  • Una matriz nunca es "recorrida" salvo que la recorras tú usando un bucle en tu programa. Si el bucle es un "for" que va de 0 a 3, pues solo se recorren esos 4 elementos, aunque la matriz tenga 100. Así que es tu responsabilidad conservar una variable que indique hasta qué valor llegaste a cargar en la matriz, y luego usar esa variable cada vez que vayas a recorrer la matriz.
    • Marcado como respuesta John Vanegas jueves, 20 de abril de 2017 21:16
    jueves, 20 de abril de 2017 21:14

Todas las respuestas

  • En estos casos, se lee el archivo a un objeto List<tipo>, que permite ir creciendo dinámicamente (basta llamar al método Add para agregar un nuevo elemento al final de la lista). Si necesitas que sea bidimensional, se puede hacer una lista de listas, o si el número de columnas es fijo, un List de vectores.

    Y luego al final, cuando terminas de cargar el archivo, llamas al método ToArray() del List y eso ya te lo convierte en un array con el tamaño que corresponda al número de elementos que contenía la lista. Si es bidimensional, no podrás usar el ToArray, pero siempre puedes conseguir manualmente el mismo efecto recorriendo con sendos bucles los elementos de las listas anidadas y trasladándolos al array bidimensional (cuyas dimensiones ahora sí que conoces y son fijas, porque se infieren del número de elementos cargados en el List).

    jueves, 20 de abril de 2017 20:56
  • Gracias entiendo el punto, lo que dices es crear la lista "List" que temporalmente cargue la información y luego como dices con el método de .COUNT determinar el tamaño para posteriormente crear un array y pasarlo , el punto era optimizar, ya que necesito ir recorriendo eso segundo a segundo en un programa que estoy haciendo. entonces lo mejor será dejar la matriz con un número alto de posibles posiciones y posteriormente recorrerlas. Disculpa otra pregunta, no se como es el funcionamiento interno, pero en caso de que una matriz por ejemplo de 100 x 100 solo se llene 4 x 4, el resto de la matriz es recorrida?. Gracias por tu aporte.
    jueves, 20 de abril de 2017 21:04
  • Una matriz nunca es "recorrida" salvo que la recorras tú usando un bucle en tu programa. Si el bucle es un "for" que va de 0 a 3, pues solo se recorren esos 4 elementos, aunque la matriz tenga 100. Así que es tu responsabilidad conservar una variable que indique hasta qué valor llegaste a cargar en la matriz, y luego usar esa variable cada vez que vayas a recorrer la matriz.
    • Marcado como respuesta John Vanegas jueves, 20 de abril de 2017 21:16
    jueves, 20 de abril de 2017 21:14
  • Es verdad se me paso, gracias por recordarme.
    jueves, 20 de abril de 2017 21:16