[C con Clase] Arrays dinámicos

Steven Davidson steven en conclase.net
Mie Mar 7 18:54:14 CET 2007


Hola Alejandro,

El pasado 2007-03-07 17:07:28, Alejandro escribió:

A> Hola, estoy empezando a ver el capítulo de arrays dinámicos de varias dimensiones a partir de punteros a punteros. Tengo una duda sobre  los arrays de tres dimensiones. Bueno, en realidad, quería que me confirmarais si el código que he escrito está bien hecho y no tiene ningún fallo:

Veamos el código.

A> #include <iostream>
A> #define D1 100
A> #define D2 50
A> #define D3 25

Recomiendo definir constantes, en lugar de constantes simbólicas. O sea,

const int D1 = 100;
const int D2 =  50;
const int D3 =  25;

A> using namespace std;
A> int main()
A> {
A>     int ***tabla, x, y;
A>     
A>     tabla = new int**[D1];
A>     for(x = 0; x < D1; x++)tabla[x] = new int*[D2];
A>     for(x = 0; x < D1; x++)for(y = 0; y < D2; y++)tabla[x][y] = new int[D3];
A>     

Podrías haber combinado estos bucles bajo uno. Esto sería,

for( x = 0; x < D1; x++ )
{
  tabla[x] = new int*[D2];
  for( y = 0; y < D2; y++ )
    tabla[x][y] = new int[D3];
}

A>     tabla[10][10][10] = D2;
A>     cout << tabla[10][10][10] << endl;
A>     
A>     for(x = 0; x < D1; x++)for(y = 0; y < D2; y++)delete[] tabla[x][y];
A>     for(x = 0; x < D1; x++)delete[] tabla[x];

Aquí ocurre lo mismo que antes; podemos agrupar las sentencias:

for( x = 0; x < D1; x++ )
{
  for( y = 0; y < D2; y++ )
    delete[] tabla[x][y];
  delete[] tabla[x];
}

A>     delete[] tabla;
A>     cin.get();
A>     return 0;
A> }

Sí; todo es correcto.


Hasta pronto,

Steven


Más información sobre la lista de distribución Cconclase