Trouver l'index d'une array multidimensionnel

Résolu
belette321 Messages postés 100 Date d'inscription samedi 3 mai 2008 Statut Membre Dernière intervention 9 mars 2011 - 7 mars 2011 à 01:43
belette321 Messages postés 100 Date d'inscription samedi 3 mai 2008 Statut Membre Dernière intervention 9 mars 2011 - 9 mars 2011 à 04:37
Bonjour, Bonsoir, je cherche une façons de trouver l'index de chaque item dans un array multidimensionnel.

Je donne un exemple fictif pour montrer se que je veut dire:
  int[,] Map = new int[x, y];
  foreach (int Texture in Map)
   {
   x = Texture.GetIndex(0); // returns x index
   y = Texture.GetIndex(1); // returns y index
   //Pu
is utilisation des valeur x et y..
}

Voici un second exemple fictif:

int[,] Map = new int[x, y];
foreach (int Texture in Map)
{
var x Map.Select((Texture, index, index2)> new
{x index, y index2}.Where(item == Texture).First().Position);
var y Map.Select((Texture, index, index2)> new
{x index, y index2}.Where(item == Texture).First().Position);
}

6 réponses

belette321 Messages postés 100 Date d'inscription samedi 3 mai 2008 Statut Membre Dernière intervention 9 mars 2011 1
9 mars 2011 à 04:37
Ummm j'ai mieu ! Nouvelle class > "Object2D.cs"
public class  Object2D
    {
        public  int X;
        public  int Y;
        public  int Item;

        public Object2D(int x, int y, int item)
        {
            X = x;
            Y = y;
            Item = item;
        }
    }


Je change le int[,] de Map pour une definition telle que :
  foreach (string Line in Lines)
            {
                Line2 = Line.Split(",".ToArray());
                
                foreach (string TIL in Line2)
                {
                    Map[x2,y2] = new Object2D(x2, y2, int.Parse(TIL));
                    y2++;
                }
                x2++;
                y2 = 0;
            }
            return Map;

Je mets pas tout les detail, le reste du code est plutot compliquer tout sa pour dire que lors de la definition de chaque valeur dans map je leur accord une valeur x, y et on utilise comme cela:

   foreach (Object2D Texture in Map)
            {
                int x = Texture.X;
                int y = Texture.Y;
                int item = Texture.Item;
}


Voilla merci quand meme :)
3
belette321 Messages postés 100 Date d'inscription samedi 3 mai 2008 Statut Membre Dernière intervention 9 mars 2011 1
7 mars 2011 à 01:44
Merci de votre futur aide :)
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
7 mars 2011 à 10:45
Bonjour,

C'est effectivement une question pertinente sur laquelle je ne me suis jamais posé car je ne me souviens pas avoir déjà utilisé un jour les tableaux multi-dimensionnels (à la limite les int[][] mais pas int[,]).

J'ai trouvé une réponse que je partage avec toi ici.
Il semblerait que le code suivant réponde à ta question:
int[,] map = new int[10, 20];
for (int x = 0; x < map.GetLength(1); x++)
{
  for (int y = 0; y < map.GetLength(0); y++)
  {
    // A toi de jouer...
  }
}

Note: j'ai peut-être inversé le x et y.

Tu trouveras aussi des choses ici.

Bon développement.

Billou_13

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0
belette321 Messages postés 100 Date d'inscription samedi 3 mai 2008 Statut Membre Dernière intervention 9 mars 2011 1
7 mars 2011 à 17:05
Bonjour,
J'avais déjà trouver ce code sur un autre site mais merci quand même :)

Sauf que se que tu fait ses trouver la hauteur et la largeur de "Map" au complet, se qui ne mes pas vraiment utile (Je connais déjà la taille), enfaite je cherche la position x, y de "Texture".

A se que j'ai lu je crois que sais faisable par LINQ mais étant habituer au 3.0 de Framework, je suis pas très familier avec le LINQ alors je me remets entre les main d'experts...

Merci. :D
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
8 mars 2011 à 17:33
J'aimerais bien aider mais je comprends pas le problème ^^
Quel est le souci avec la solution de billou_13 ?
Il ne cherche pas les dimensions du tableau Map, il parcourt l'ensemble des données qu'il contient, de la même manière que tu le fais avec ton foreach.

Peut être qu'en mettant le problème dans le contexte je comprendrai ce que tu cherches réellement à faire ;)
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
8 mars 2011 à 17:50
Bonsoir,

Sinon, tu as toujours la solution d'utiliser le tableau de tableau:
int[][] map = new int[n][];


C'est moins élégant mais tu auras moins de problème pour faire ce que tu souhaites....

Enfin, c'est à toi de voir mais dans tous les cas, la réponse m'intéresse !

Bon courage,

Billou_13

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0
Rejoignez-nous