comment parcourir un tableau de dimension inconnue?

Le
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?
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Sebastien Curutchet
Le #12189881
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;
}
}
}
}
}
Faust
Le #12189871
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"
Publicité
Poster une réponse
Anonyme