[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