Partage
  • Partager sur Facebook
  • Partager sur Twitter

Retourner un tableau a 2 dimension en c#

De qu'elle manière retourner un tableau ?

    21 janvier 2023 à 11:24:14

    Bonjour a tous.

    Voici mon code:

    using System;
    
    public class FisrtArrayApp
    {
        static void Main()
        {
            Console.WriteLine("This is my first program with a function and a array");
            int[,] array = new int[8, 8];
            int[,] echiquier;
            init_array(array);
            echiquier = fill_in_grid(array);
            display_array(array);
        }
    
    
    
        static void init_array(int[,] tableau)
        {
            for (int i = 0; i < tableau.GetLength(0); i++)
            {
                for (int j = 0; j < tableau.GetLength(0); j++)
                {
                    tableau[i, j] = 0;
                }
    
            }
        }
    
        static void display_array(int[,] tableau)
        {
            for (int i = 0; i < tableau.GetLength(0); i++)
            {
                for (int j = 0; j < tableau.GetLength(0); j++)
                {
                    Console.Write(" " + tableau[i, j]);
                }
    
                Console.WriteLine();
            }
        }
    
        static int[,] fill_in_grid(int[,] tableau)
        {
            for (int i = 0; i < tableau.GetLength(0); i++)
            {
                for (int j = 0; j < tableau.GetLength(0); j++)
                {
                    if (i < 2)
                    {
                        tableau[i, j] = 1;
                    }
    
                    if (i > 5)
                    {
                        tableau[i, j] = 2;
                    }
    
                }
    
            }
            return tableau;
        }
    }

    Je voulais savoir si l'on pouvait bien renvoyer un tableau à deux dimensions comme cela dans la fonction fill_in_grid ou s' il y avait une autre syntaxe plus appropriée.

    Mon code fonctionne mais y a t'il un manière plus optimisée ?

    Merci a l'avance pour vos réponse en espérant que je post au bon endroit

    • Partager sur Facebook
    • Partager sur Twitter
      21 janvier 2023 à 23:11:46

      Il est possible de retourner un tableau à deux dimensions de cette manière dans la fonction fill_in_grid. C'est une syntaxe valide en C#. Votre code fonctionne correctement.

      Il n'y a pas de manière plus optimisée pour retourner un tableau à deux dimensions dans cette fonction, cependant, il y a des options pour améliorer la performance globale de votre programme, comme utiliser des boucles "foreach" à la place des boucles "for" pour parcourir les tableaux, ou utiliser des méthodes d'extension pour éviter de créer une nouvelle instance de tableau dans la fonction fill_in_grid. Il est également possible de paralléliser certaines opérations pour améliorer les performances.

      Voici un exemple d'utilisation de la boucle "foreach" pour parcourir les éléments d'un tableau à deux dimensions dans la fonction display_array :

      static void display_array(int[,] tableau)
      {
          foreach (int element in tableau)
          {
              Console.Write(" " + element);
          }
          Console.WriteLine();
      }
      

      Voici un exemple d'utilisation de la méthode d'extension "Clone" pour éviter de créer une nouvelle instance de tableau dans la fonction fill_in_grid :

      static int[,] fill_in_grid(int[,] tableau)
      {
          int[,] newTableau = (int[,])tableau.Clone();
          for (int i = 0; i < newTableau.GetLength(0); i++)
          {
              for (int j = 0; j < newTableau.GetLength(0); j++)
              {
                  if (i < 2)
                  {
                      newTableau[i, j] = 1;
                  }
                  if (i > 5)
                  {
                      newTableau[i, j] = 2;
                  }
              }
          }
          return newTableau;
      }
      

      Il existe également des bibliothèques de parallélisation telles que Parallel.For() qui permet de paralléliser des boucles "for" pour améliorer les performances.

      static void init_array(int[,] tableau)
      {
          Parallel.For(0, tableau.GetLength(0), i =>
          {
              for (int j = 0; j < tableau.GetLength(0); j++)
              {
                  tableau[i, j] = 0;
              }
          });
      }
      

      Il est important de noter que ces améliorations peuvent avoir un impact sur la mémoire et la complexité de votre programme, il est donc recommandé de les tester et de les utiliser en fonction des besoins de votre projet.



      -
      Edité par André Parfait 21 janvier 2023 à 23:16:46

      • Partager sur Facebook
      • Partager sur Twitter
        24 janvier 2023 à 12:51:38

        il y a potentiellement un souci : tu utilises tableau.GetLength(0) pour lire la taille de chacune de tes dimensions, or avec la valeur 0, tu ne retournes que la taille de la 1ère dimension. Ici ton tableau est carré, donc le souci n'est pas visible, mais si ton tableau est de taille (8,10) par exemple tu ne traiteras pas les dernières dimensions et si il est de taille (10,8) tu aura une erreur d'index lors du parcours selon la seconde dimension.
        • Partager sur Facebook
        • Partager sur Twitter

        Retourner un tableau a 2 dimension en c#

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown