Zastanawiam się jak utworzyć tablicę trójwymiarową i większą korzystając z tablicy jednowymiarowej.
Dla dwuwymiarowej wygladałoby to mniej wiecej tak:
int * array = (int *) malloc(X * Y * sizeof(int));
i odwołanie poprzez
array[X*i+j]
Idea jest taka X to ilość wierszy, i to aktualny wiersz, a j to kolumna. Łatwo zauważyć, że przy tym mnożeniu mamy dla wiersza zerowego 0X + j(gdzie j to wartość od 0 do Y-1) dla wiersza pierwszego mamy 1X+j i widać, że to się nigdy nie będzie pokrywało.
I teraz nie bardzo moge dojść do tego jak właśnie w analogiczny sposób zrobić tablicę trójwymiarową(i większe). Zaalokować pamięć bardzo prosto...
int * array = (int *) malloc(X * Y * Z * sizeof(int));
ale jaką kombinacją odwoływać się do elementów. Na pewno nie działają kombinacje:
X*i+Y*j+k
X*Y*i+j+k
X*i*Y*J+k
Jeżeli ktoś ma pomysł, prosze o pomoc.