[C con Clase] Definir una variable int*, int** , ... , int **...* en runtime

David fire ddfire en gmail.com
Dom Ago 24 21:20:04 CEST 2008


hola
me quede pensando, un *int es un puntero a un int
**int es un puntero a un puntero de int
un *** es un puntero a un puntero de int
entonces ***int es lo mismo que **int
de cualquier manera
por que una usas una lista?
hace una clase dimensión que tenga apuntadores a las dimensiones siguientes

vos tenes una dimension que va a ser la cabecera cuando quieras ir a la
posición (x;y;z;q;j;i) le pasas a la cabecera un arreglo con estos datos y
la cantidad de datos (las dimenciones) entonces la cabecera que hace, a su
"hija" x le pasa (y;z;q;j;i) y n-1
y esa a su vez le pasa a su hija y (z;q;j;i) hasta que llegas  a donde
queres ir, la ultima te devuelve un puntero al dato o el dato.

en realidad no hace falta que llames al siguiente por que bastaria que hagas

this.posicion[x]->posicion[y]->posicion[z]->posicion[q]....->posicion[i]
posicion es un arreglo de **int  menos el ultimo que es un puntero a int o
un arreglo de ints directamente.
como sabes que es? bueno cuando generas las dimenciones la ultima apunta a
ints y no a punteros de int.

supongo que lo tenes que hacer como ejercicio para la facultad o algo asi
por que si no corres el riesgo de quedarte sin memoria.

saludos
David





El 24 de agosto de 2008 15:32, Fabian Arenas <lordjerhyn en gmail.com>escribió:

> El 24 de agosto de 2008 7:49, carles <carsato1 en yahoo.es> escribió:
>
>> Hola
>>
>>  Quisiera crear una matriz de n dimensiones dinámica. Para ello he
>> pensado en crear un puntero unsigned int**...* de n dimensiones y
>> reservar espacio con el operador new, para ello haría falta una funcion
>> de reserva para cada dimension, pero eso es otra historia.
>>  El problema con el que me he encontrado es que no puedo reservar una
>> variable int*...* en tiempo de ejecución
>>
>>  Lo que intento hacer es crear una clase que tenga la variable
>> int*...*, para ello hago
>>
>>        int * matriz;
>>
>>        y una vez sabida la dimensión pretendo cambiar el tipo de la
>> variable
>> "matriz" a int *...*, ahí es donde tengo el problema, ya que eso no lo
>> permite el compilador por ninguno de los métodos de cásting que he
>> encontrado en manuales.
>>
>>  ¿Alguien puede sugerirme alguna solución? ¿Hay otro, o algún, método
>> para hacer lo que yo quiero?
>>
>> Gracias por vuestro tiempo ;)
>>
>> Un saludo.
>>
>>
>>
> mmmm la verdad es que lo estuve pensando .... y lo unico que se me ocurrio
> es que crearas una clase .... la cual tubiera no se po:
> private:
>      int *matriz;
>      int **matriz;
>                 ....
>                ....
>      int
> ***********************************************************************matriz;
>
> y que luego le dijeras al user que ingrese la dimension para trabajar ....
> o la puedes definir segun los datos ... y a raiz de esta .... trabaje con
> switch para el tipo de matriz ...
>
> eso se me ocurrio ... medio chanta ... pero funciona ....
>
> sl2
>
>
>>
>>
>> _______________________________________________
>> Lista de correo Cconclase Cconclase en listas.conclase.net
>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>
>
>
>
> --
> Fabian Arenas L.
> Estudiante de Ingeniería en Informática. UTEM
> Web: http://eterniosilicio.blogspot.com/
> Linux Registered User #476277 - http://counter.li.org/
> Si nada te resulta.......Rutea el algoritmo po GIL!!!
>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>



-- 
(\__/)
(='.'=)This is Bunny. Copy and paste bunny into your
(")_(")signature to help him gain world domination.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20080824/bb5f1e9a/attachment.html>


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