IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Récupérer tableau à deux dimensions


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2013
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 36
    Par défaut Récupérer tableau à deux dimensions
    Bonjour à tous,

    Je ne sais pas comment récupérer un tableau à deux dimensions, je m'explique ma première fonction créer un tableau de deux ligne est une colonne et ma deuxième fonction doit récupérer le tableau en question est ajouter les valeurs dans un nouveau tableau.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    public double[,] ajouterValeur()
    {    
    double[,] tabXY = new double[2,1];
     
    tabXY[0,0] = 5.2;
    tabXY[1,0] = 8.9;
     
    return tabXY;
     
    }
     
    public void recupererValeur()
    {
    double[,] tabXY = new double[2,50];
     
    //Mon problème est ici je ne sais pas comment récupérer les dimensions
    tabXY = ajouterValeur();
     
    }
    Merci de votre aide,

  2. #2
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MessageBox.Show("Dimension 1 = "+tabXY.GetLength(0).ToString());
    MessageBox.Show("Dimension 2 = "+tabXY.GetLength(1).ToString());

  3. #3
    Membre averti
    Inscrit en
    Février 2013
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 36
    Par défaut
    Ah désolé je me suis mal fait comprendre je ne souhaite pas afficher les dimensions dans une message box.

    Dans ma deuxième fonction je veux récupérer le tableau retourner par la première et ainsi copier les valeurs dans un nouveau tableau

    Je sais pas si c'est très clair

    Merci,

  4. #4
    Membre émérite

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Par défaut
    Tout comme ta première méthode a un retour de type double[][], il faut que ta deuxième méthode accepte un argument de ce même type.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void MyAwesomeMethod(double[][] myAwesomeDoubleDimensionArray)
    {
        Foo(myAwesomeDoubleDimensionArray); // Do stuff with my awesome array !
    }
    Mon blog sur les technos .NET et Agile -> http://blog.developpez.com/maximepalmisano/

  5. #5
    Membre averti
    Inscrit en
    Février 2013
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 36
    Par défaut
    Désolé j'ai pas bien compris le code.

    Mais j'ai une question, ma première méthode retourne un tableau de type [,]. Dans ma deuxième méthode pour avoir ce tableau il faut bien faire appel à la première méthode comme ceci : ? non.

    En exemple :
    Ma première méthode renvoie un int pour récupérer ce int dans ma deuxième méthode je fais comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int nb = ajouterValeur();
    là ça marche dans ce cas, mais dans le cas d'un tableau [,] j'arrive pas à récupérer mes valeurs.

    Merci de votre aide et désolé je débute en c#

  6. #6
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Par défaut
    Tiens voilà juste un petit programme express pour te dire qu'il y a 100 façon de gérer les tableaux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    static void Main(string[] args)
            {
                {
                    List<double[]> m_ListeCoordonnees = new List<double[]>();
                    m_ListeCoordonnees.Add(new double[] { 1.0, 3.44 });
                    m_ListeCoordonnees.Add(new double[] { 5.7, 9.1011 });
                    m_ListeCoordonnees.Add(new double[] { 7.9, 7.5787 });
     
                    double[] coordonnees1 = m_ListeCoordonnees[0];
                    double[] coordonnees2 = m_ListeCoordonnees[1];
                    double[] coordonnees3 = m_ListeCoordonnees[2];
                    //double[] coordonnees4 = m_ListeCoordonnees[3]; <--- OutOfRangeException (seulement 3 tableaux) 
     
                    Console.WriteLine("List<double[]>");
                    for (int index = 0; index < m_ListeCoordonnees.Count; index++)
                    {
                        Console.WriteLine("Coordonnées index={0} X={1}, Y={2}", index, m_ListeCoordonnees[index][0], m_ListeCoordonnees[index][1]);
                    }
                }
     
                {
                    double[,] m_ListeCoordonnees = new double[3, 2];
                    m_ListeCoordonnees[0, 0] = 1.0;
                    m_ListeCoordonnees[0, 1] = 3.44;
                    m_ListeCoordonnees[1, 0] = 5.7;
                    m_ListeCoordonnees[1, 1] = 9.1011;
                    m_ListeCoordonnees[2, 0] = 7.9;
                    m_ListeCoordonnees[2, 1] = 7.5787;
     
                    double[] coordonnees1 = new double[] { m_ListeCoordonnees[0, 0], m_ListeCoordonnees[0, 1] };
                    double[] coordonnees2 = new double[] { m_ListeCoordonnees[1, 0], m_ListeCoordonnees[1, 1] };
                    double[] coordonnees3 = new double[] { m_ListeCoordonnees[2, 0], m_ListeCoordonnees[2, 1] };
     
                    Console.WriteLine("double[,]");
                    for (int index = 0; index < m_ListeCoordonnees.GetLength(0); index++)
                    {
                        Console.WriteLine("Coordonnées index={0} X={1}, Y={2}", index, m_ListeCoordonnees[index, 0], m_ListeCoordonnees[index, 1]);
                    }
                }
     
                {
                    double[][] m_ListeCoordonnees = new double[3][];
                    m_ListeCoordonnees[0] = new double[2] { 1.0, 3.44 };
                    m_ListeCoordonnees[1] = new double[] { 5.7, 39.1011 };
                    m_ListeCoordonnees[2] = new double[] { 5.7, 39.1011 };
     
                    double[] coordonnees1 = m_ListeCoordonnees[0];
                    double[] coordonnees2 = m_ListeCoordonnees[1];
                    double[] coordonnees3 = m_ListeCoordonnees[2];
     
                    Console.WriteLine("double[][]");
                    for (int index = 0; index < m_ListeCoordonnees.GetLength(0); index++)
                    {
                        Console.WriteLine("Coordonnées index={0} X={1}, Y={2}", index, m_ListeCoordonnees[index][0], m_ListeCoordonnees[index][1]);
                    }
                }
     
                Console.ReadLine();
            }
    Debug ça et regarde les valeurs. Tu verras les différences de stockage. Les trois bout de code dont exactement la même chose.
    La seule différence sur le 1ere est qu'on utilise un tableau dynamique List<T> qui par définition peut grandir.
    Les deux autres ont des dimensions finies (3 lignes ici).

    Voila si tu as d'autres questions...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/10/2013, 01h33
  2. Récupérer l'adresse d'un tableau à deux dimensions
    Par GSébastien dans le forum Débuter
    Réponses: 5
    Dernier message: 19/09/2008, 16h23
  3. Réponses: 1
    Dernier message: 18/11/2005, 11h38
  4. tri alphabétique dans un tableau deux dimensions
    Par *!!cocco!!* dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 06/12/2004, 21h38
  5. Passage d'un tableau à deux dimensions
    Par karl3i dans le forum C
    Réponses: 3
    Dernier message: 20/10/2003, 14h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo