[C con Clase] Duda sobre acceso a array multidimensional con punteros
mikel en campusdeportivo.com
mikel en campusdeportivo.com
Jue Ago 30 14:14:55 CEST 2012
Hola
Me llamo Mikel y os escribo porque he encontrado un artículo en
vuestra web, http://c.conclase.net/curso/?cap=015b, me ha sido útil
para poder pasar arrays multidimensionales en una función.
EL problema viene al intentar acceder a los elementos del array cuando
hago uso de la fuuncion. YO tengo el siguiente codigo:
Mi declaración de la función:
//Le paso el numero de frames del dibujo: numframesparametro
//este parametro tambien lo utilizaremos como tamaño par el array
test_frame_size
//LE paso un array que contiene el numero de puntos de cada frame:
test_frame_size []
// Le paso otro array que tiene todods los puntos del dibujo. Es de 3
dimensiones, [numero de frames][num max de puntos a dibujar en un
frame][datos de cada punto coordenadas, blankin y colores]
int pintar (int numframesparametro, int test_frame_size [],int
*test_frame, int indice_maxptsframe, int indice_datospunto);
Cuando la llamo hago lo siguiente:
int test_frame_ws [7][302][6]
numFrames=7;
int test_frame_size_ws[numFrames] = {300,301,293,281,280,287,292};
pintar(numFrames, test_frame_size_ws,(int*)test_frame_ws,302,6);
El problema viene dentro de la función al intentar acceder a una
posición concreta de ese array multidimensional. En vuestro articulo
definis una formula que no acabo de entender.
a[p+o*P+m*O*P+n*M*O*P] o también a[p+P*(n+m+o)+O*(m+n)+M*n].
Y en el ejemplo practico no entiendo como la aplicáis, ya que hacéis
par un array de 4 dimensiones, para acceder a ala posicion
tabla[3][4][12][15] usáis tabla[3*m*o*p+4*o*p+12*p+15], por lo que yo
entiendo que de forma generica seria par ami array de 3 dimensiones
seria:
miarray [N][M][O] y quiero acceder a la posición miaray[n][m][o], saco
la formula a[N*m+o+M*o+O], esto me devuelve posiciones que no son las
que quiero.
Espero que podáis ayudarme.
Gracias de antemano
Mikel
Más información sobre la lista de distribución Cconclase