SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: apokryphos en Domingo 3 de Diciembre de 2006, 11:44

Título: Matriz Dinamica
Publicado por: apokryphos en Domingo 3 de Diciembre de 2006, 11:44
bueno la pregunta es la siguiente como hago para declarar un matriz dinamica por que para una matriz sencilla se necesita un vector y a ese vector se le declaran dos indices y asi pero para la matriz dinamica es algo distinto y estube leyendo un libro de luis joyanes y zanoero pero no entendi mucho por que carajo estaba trabajando con dobles punteros y no lo pude adaptar de antemano muchas gracias por las posibles respuestas
Título: Re: Matriz Dinamica
Publicado por: NiCH en Domingo 3 de Diciembre de 2006, 12:44
Buenas, es mi primer post en este foro que considero interesante, a ver si te puedo ayudar:

para trabajar con memoria dinámica deberías usar los operadores new y delete junto con punteros.

un sencillo ejemplo:

const int TAM = 10; // tamaño del array.
int *ptrArray = 0;    // inicializamos un puntero.

    if ( ( ptrArray = new int [TAM] ) == NULL ) // o también if ( !ptrArray )
     cout << "error de asignación de memoria";
    else
     cout << "empezamos a trabajar con el array";

    delete [] ptrArray;


Si alguien le encuentra algún error no duda en corregir, estamos aquí para aprender.

Salu2
Título: Re: Matriz Dinamica
Publicado por: Eternal Idol en Domingo 3 de Diciembre de 2006, 13:12
En el caso de tipos primitivos es mejor usar malloc/free al no necesitar llamadas a constructores/destructores.
Título: Re: Matriz Dinamica
Publicado por: Geo en Domingo 3 de Diciembre de 2006, 20:53
Para manejar matrices dinámicas puedes hacerlo de dos formas: mediante un puntero de doble subídince:

int **ptrMatriz;

o con un sólo vector e indexando de la siguiente forma:

Código: Text
  1.  
  2. int* ptrMatriz;
  3.  
  4. ptrMatriz = new int( num_filas * num_columnas );
  5. // o con malloc:
  6. // ptrMatriz = malloc( sizeof( int ) * numfilas * num_columnas );
  7.  
  8. posicion = ptrMatriz[ tamanio_filas * fila + columna ];
  9.  
  10.  

Suerte,
JJ (Geo).