ben ......
(a quoi bon faire l'inverse ?)
Bon, bref, alors, (java et moi, c'est loin, je te le fais en C, c, ca changera rien a l'idée)
mettons que ton tableau 1d fasse x cases
int size = sqrt(x);
int rest = x - (size * size);
int **tab = new int *[size];
for (int i=0;i<size-1;i++)
{
tab[i] =new int [size];
}
tab[i] = new int [size + rest];
vala, donc tu as un tableau de taille [size][size] sauf la derniere case qui est potentiellement plus grande
ca, c'est la version propre qui economisera bien ta memoire comme il se doit
sinon ce que tu peux faire, plus simple, c''est :
(l'interet m'echappe toujours )
int sizeY = sqrt(x);
int sizeX = sizeY;
if (sizeY * sizeY != x)
sizeX++;
et tu fais un tableau de taille [sizeY][sizeX] en sachant que la derniere ligne comportera potentiellment des cases non utilisées
Vala !