[Kde-devel-es] Array de 3 dimensiones

Eloy Cuadra kde-devel-es@mail.kde.org
Tue, 04 Feb 2003 19:07:58 +0100


Hola,

El Mar, 4 Feb 2003 a las 09:53:08 Jaime Robles escribió:
> Resulta que necesito hacer uso de un array de tres dimensiones... realmente
> puedo hacer uso de 2 dimensiones, pero duplico datos.
> Es algo así:
> 	int dxcc[paises][bandas][modos]
> 
> Pero paises = 340, bandas = 12 y modos = 9 por lo que es un array GRANDE, de 
> 32640 elementos!
> Puede que haya superado el límite (que para direccionar los elementos de un 
> array se use un int y me haya pasado...
> El caso es que cuando ejecuto el programa y llamo al constructor que 
> inicializa mi array, el programa simplemente muere, sin previo aviso :-(

No sé si entiendo bien lo que quieres hacer, pero si cada país puede tener esas 
12 bandas y cada banda esos 9 modos, solo hay una forma de hacerlo: usar una 
matriz de tres dimensiones :-)


> Por cierto y ya que estamos... en cada campo del array solo tengo que 
> almacenar 3 posibles valores (por lo que no me vale un booleano) y estoy 
> almacenando -1, 0, 1 ¿Hay alguna forma de hacer lo mismo pero mejor que 
> usando un "Int"?

Un int usa 4 bytes, de modo que tu matriz está usando 146880 bytes (aprox. 143 
KB). Un char sólo usa 1 byte, con lo que tu matriz usaría 36720 bytes (algo menos 
de 36 KB), o sea 4 veces menos que antes. Si usar un char para almacenar números 
te parece confuso, créate tu propio tipo de datos. Por ejemplo:

  typedef signed char mitipo;

Y luego usa la misma matriz:

  mitipo dxcc[paises][bandas][modos];

Bueno, creo que jamás he usado matrices de tres dimensiones en mis programas :-)

Saludos,

Eloy