Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

comment parcourir un tableau de dimension inconnue?

2 réponses
Avatar
Bpbmorane
Bonjour,

J'aimerais savoir s'il y a un moyen de faire un parcours de tableau
generique c'est a dire que je puisse parcourir toutes les dimension dun
tableau a 2D mais que cette meme algo puisse parcourir un tableau a 3,4,5,6
...

vous l'avez compris mon probleme etant que je ne connais rien du tableau
avant de le parcourir. je ne peux determiner a l'avance sa taille et sa
dimension(je ne l'ai qu'au moment du Array.rank), de meme je peux avoir des
jagged array donc dimensions diferentes par ligne.

Existe il un moyen simple de resoudre ce probleme?

2 réponses

Avatar
Sebastien Curutchet
Bpbmorane a écrit :
Bonjour,

J'aimerais savoir s'il y a un moyen de faire un parcours de tableau
generique c'est a dire que je puisse parcourir toutes les dimension dun
tableau a 2D mais que cette meme algo puisse parcourir un tableau a 3,4,5,6
...

vous l'avez compris mon probleme etant que je ne connais rien du tableau
avant de le parcourir. je ne peux determiner a l'avance sa taille et sa
dimension(je ne l'ai qu'au moment du Array.rank), de meme je peux avoir des
jagged array donc dimensions diferentes par ligne.

Existe il un moyen simple de resoudre ce probleme?




Bonjour,

J'ai une piste de solution : à valider et tester :

public static void ShowArray(System.Array pArray)
{
int[] intIndiceArray = null;
bool blnContinue = true;
object oCell = null;

if (pArray != null)
{
intIndiceArray = new int[pArray.Rank];

while(blnContinue)
{
blnContinue = false;
for(int i = 0 ; !blnContinue && i < intIndiceArray.Length ; i++)
{
if (intIndiceArray[i] < pArray.GetLength(i))
blnContinue = true;
}

if (!blnContinue)
break;


oCell = pArray.GetValue(intIndiceArray);

if (oCell is Array)
ShowArray(oCell as Array);
else
Console.WriteLine(pArray.GetValue(intIndiceArray));

for(int i = intIndiceArray.Length -1 ; i >= 0 ; i--)
{
if (intIndiceArray[i] < pArray.GetLength(i) - 1)
{
intIndiceArray[i]++;
blnContinue = true;
break;
}
else if (i == 0)
{
blnContinue = false;
break;
}
else
{
intIndiceArray[i] = 0;
blnContinue = true;
}
}
}
}
}
Avatar
Faust
Array implémentant IEnumerator: en utilisant foreach
chaque dimension du tableau étant lui même un array, tu peut lire ton
tableau en récursif

avec foreach, tu prend chaque dimension de ton tableau
si cet element est un tableau, tu refais un foreach sinon tu as atteind
la profondeur max de la branche en cours

/_Bpbmorane_ a exprimé avec précision/ :
Bonjour,



J'aimerais savoir s'il y a un moyen de faire un parcours de tableau generique
c'est a dire que je puisse parcourir toutes les dimension dun tableau a 2D
mais que cette meme algo puisse parcourir un tableau a 3,4,5,6 ...



vous l'avez compris mon probleme etant que je ne connais rien du tableau
avant de le parcourir. je ne peux determiner a l'avance sa taille et sa
dimension(je ne l'ai qu'au moment du Array.rank), de meme je peux avoir des
jagged array donc dimensions diferentes par ligne.



Existe il un moyen simple de resoudre ce probleme?



--
Faust
"Une âme en peine peut en cacher une autre"