Apprendre à programmer

Guide : Liste de Tableaux en C#

En C#, une liste de tableaux est une structure où chaque élément de la liste est un tableau. Cela peut être utile lorsque vous devez gérer une collection de tableaux de tailles fixes ou dynamiques.


1. Déclaration et Initialisation

Pour créer une liste de tableaux, utilisez la classe List du namespace System.Collections.Generic, combinée avec le type tableau (T[]).

Exemple : Liste de tableaux d’entiers

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // Déclarer une liste de tableaux d'entiers
        List<int[]> listeTableaux = new List<int[]>();

        // Initialiser des tableaux et les ajouter à la liste
        listeTableaux.Add(new int[] { 1, 2, 3 });
        listeTableaux.Add(new int[] { 4, 5 });
        listeTableaux.Add(new int[] { 6, 7, 8, 9 });

        // Afficher les éléments
        foreach (int[] tableau in listeTableaux)
        {
            Console.WriteLine(string.Join(", ", tableau));
        }
    }
}

Résultat :

1, 2, 3
4, 5
6, 7, 8, 9

2. Accéder aux Éléments

Les éléments d’une liste de tableaux sont accessibles via leur index dans la liste et via leur index dans le tableau.

Exemple : Accès par index

List<int[]> listeTableaux = new List<int[]>
{
    new int[] { 1, 2, 3 },
    new int[] { 4, 5 },
    new int[] { 6, 7, 8, 9 }
};

// Accéder au deuxième tableau
int[] tableau2 = listeTableaux[1];
Console.WriteLine(string.Join(", ", tableau2)); // Affiche : 4, 5

// Accéder au troisième élément du troisième tableau
int valeur = listeTableaux[2][2];
Console.WriteLine(valeur); // Affiche : 8

3. Ajouter et Supprimer des Tableaux

  • Ajouter un tableau à la liste : Utilisez la méthode Add.
  • Supprimer un tableau de la liste : Utilisez Remove ou RemoveAt.

Exemple : Ajouter et Supprimer

List<int[]> listeTableaux = new List<int[]>();

// Ajouter des tableaux
listeTableaux.Add(new int[] { 10, 20 });
listeTableaux.Add(new int[] { 30, 40 });

// Supprimer le premier tableau
listeTableaux.RemoveAt(0);

// Afficher les éléments restants
foreach (int[] tableau in listeTableaux)
{
    Console.WriteLine(string.Join(", ", tableau));
}

Résultat :

30, 40

4. Parcourir une Liste de Tableaux

Vous pouvez parcourir une liste de tableaux avec des boucles foreach ou for.

Exemple : Parcours avec foreach

List<int[]> listeTableaux = new List<int[]>
{
    new int[] { 1, 2, 3 },
    new int[] { 4, 5 },
    new int[] { 6, 7, 8, 9 }
};

// Parcourir les tableaux
foreach (int[] tableau in listeTableaux)
{
    foreach (int valeur in tableau)
    {
        Console.Write(valeur + " ");
    }
    Console.WriteLine();
}

Résultat :

1 2 3
4 5
6 7 8 9

Exemple : Parcours avec for

for (int i = 0; i < listeTableaux.Count; i++)
{
    Console.WriteLine($"Tableau {i + 1}: {string.Join(", ", listeTableaux[i])}");
}

5. Trier une Liste de Tableaux

Vous pouvez trier une liste de tableaux en fonction de leur longueur ou des valeurs spécifiques.

Exemple : Trier par Longueur

List<int[]> listeTableaux = new List<int[]>
{
    new int[] { 1, 2, 3 },
    new int[] { 4, 5 },
    new int[] { 6, 7, 8, 9 }
};

// Trier par longueur de tableau
listeTableaux.Sort((a, b) => a.Length.CompareTo(b.Length));

// Afficher les tableaux triés
foreach (int[] tableau in listeTableaux)
{
    Console.WriteLine(string.Join(", ", tableau));
}

Résultat :

4, 5
1, 2, 3
6, 7, 8, 9

Exemple : Trier par Première Valeur

listeTableaux.Sort((a, b) => a[0].CompareTo(b[0]));

6. Cas Avancé : Liste de Tableaux d’Objets

Vous pouvez créer une liste de tableaux contenant des objets personnalisés.

Classe Exemple

public class Personne
{
    public string Nom { get; set; }
    public int Age { get; set; }
}

Liste de Tableaux d’Objets

List<Personne[]> listeTableauxPersonnes = new List<Personne[]>
{
    new Personne[] { new Personne { Nom = "Jean", Age = 30 }, new Personne { Nom = "Marie", Age = 25 } },
    new Personne[] { new Personne { Nom = "Paul", Age = 40 } }
};

// Afficher les tableaux d'objets
foreach (Personne[] tableau in listeTableauxPersonnes)
{
    foreach (Personne personne in tableau)
    {
        Console.WriteLine($"Nom : {personne.Nom}, Âge : {personne.Age}");
    }
    Console.WriteLine();
}

Résultat :

Nom : Jean, Âge : 30
Nom : Marie, Âge : 25

Nom : Paul, Âge : 40

7. Méthodes Utiles

MéthodeDescription
Add(array)Ajoute un tableau à la liste.
Remove(array)Supprime un tableau spécifique.
RemoveAt(index)Supprime un tableau à l’index spécifié.
Sort(comparison)Trie la liste selon un critère.
CountRetourne le nombre de tableaux dans la liste.
Clear()Supprime tous les tableaux de la liste.

Exemple Complet

Voici un programme complet combinant plusieurs fonctionnalités d’une liste de tableaux.

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<int[]> listeTableaux = new List<int[]>();

        // Ajouter des tableaux
        listeTableaux.Add(new int[] { 5, 10, 15 });
        listeTableaux.Add(new int[] { 1, 2 });
        listeTableaux.Add(new int[] { 8, 3, 6, 4 });

        // Trier par longueur
        listeTableaux.Sort((a, b) => a.Length.CompareTo(b.Length));

        // Afficher les tableaux triés
        Console.WriteLine("Tableaux triés par longueur :");
        foreach (int[] tableau in listeTableaux)
        {
            Console.WriteLine(string.Join(", ", tableau));
        }

        // Rechercher une valeur dans les tableaux
        Console.WriteLine("\nRechercher une valeur :");
        int recherche = 6;
        bool trouve = false;

        foreach (int[] tableau in listeTableaux)
        {
            if (Array.IndexOf(tableau, recherche) >= 0)
            {
                Console.WriteLine($"Valeur {recherche} trouvée dans {string.Join(", ", tableau)}");
                trouve = true;
            }
        }

        if (!trouve)
        {
            Console.WriteLine($"Valeur {recherche} non trouvée.");
        }
    }
}

Synthèse 😉

  • Une liste de tableaux combine la flexibilité des listes et l’efficacité des tableaux.
  • Elle est idéale pour gérer des collections de tableaux avec des tailles variables.
  • Vous pouvez effectuer des opérations comme l’ajout, la suppression, le tri, et la recherche de manière intuitive en utilisant des méthodes intégrées ou des comparateurs personnalisés.

Guide : Liste de Tableaux en C#

En C#, une liste de tableaux est une structure où chaque élément de la liste est un tableau. Cela peut être utile lorsque vous devez gérer une collection de tableaux de tailles fixes ou dynamiques.


1. Déclaration et Initialisation

Pour créer une liste de tableaux, utilisez la classe List du namespace System.Collections.Generic, combinée avec le type tableau (T[]).

Exemple : Liste de tableaux d’entiers

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // Déclarer une liste de tableaux d'entiers
        List<int[]> listeTableaux = new List<int[]>();

        // Initialiser des tableaux et les ajouter à la liste
        listeTableaux.Add(new int[] { 1, 2, 3 });
        listeTableaux.Add(new int[] { 4, 5 });
        listeTableaux.Add(new int[] { 6, 7, 8, 9 });

        // Afficher les éléments
        foreach (int[] tableau in listeTableaux)
        {
            Console.WriteLine(string.Join(", ", tableau));
        }
    }
}

Résultat :

1, 2, 3
4, 5
6, 7, 8, 9

2. Accéder aux Éléments

Les éléments d’une liste de tableaux sont accessibles via leur index dans la liste et via leur index dans le tableau.

Exemple : Accès par index

List<int[]> listeTableaux = new List<int[]>
{
    new int[] { 1, 2, 3 },
    new int[] { 4, 5 },
    new int[] { 6, 7, 8, 9 }
};

// Accéder au deuxième tableau
int[] tableau2 = listeTableaux[1];
Console.WriteLine(string.Join(", ", tableau2)); // Affiche : 4, 5

// Accéder au troisième élément du troisième tableau
int valeur = listeTableaux[2][2];
Console.WriteLine(valeur); // Affiche : 8

3. Ajouter et Supprimer des Tableaux

  • Ajouter un tableau à la liste : Utilisez la méthode Add.
  • Supprimer un tableau de la liste : Utilisez Remove ou RemoveAt.

Exemple : Ajouter et Supprimer

List<int[]> listeTableaux = new List<int[]>();

// Ajouter des tableaux
listeTableaux.Add(new int[] { 10, 20 });
listeTableaux.Add(new int[] { 30, 40 });

// Supprimer le premier tableau
listeTableaux.RemoveAt(0);

// Afficher les éléments restants
foreach (int[] tableau in listeTableaux)
{
    Console.WriteLine(string.Join(", ", tableau));
}

Résultat :

30, 40

4. Parcourir une Liste de Tableaux

Vous pouvez parcourir une liste de tableaux avec des boucles foreach ou for.

Exemple : Parcours avec foreach

List<int[]> listeTableaux = new List<int[]>
{
    new int[] { 1, 2, 3 },
    new int[] { 4, 5 },
    new int[] { 6, 7, 8, 9 }
};

// Parcourir les tableaux
foreach (int[] tableau in listeTableaux)
{
    foreach (int valeur in tableau)
    {
        Console.Write(valeur + " ");
    }
    Console.WriteLine();
}

Résultat :

1 2 3
4 5
6 7 8 9

Exemple : Parcours avec for

for (int i = 0; i < listeTableaux.Count; i++)
{
    Console.WriteLine($"Tableau {i + 1}: {string.Join(", ", listeTableaux[i])}");
}

5. Trier une Liste de Tableaux

Vous pouvez trier une liste de tableaux en fonction de leur longueur ou des valeurs spécifiques.

Exemple : Trier par Longueur

List<int[]> listeTableaux = new List<int[]>
{
    new int[] { 1, 2, 3 },
    new int[] { 4, 5 },
    new int[] { 6, 7, 8, 9 }
};

// Trier par longueur de tableau
listeTableaux.Sort((a, b) => a.Length.CompareTo(b.Length));

// Afficher les tableaux triés
foreach (int[] tableau in listeTableaux)
{
    Console.WriteLine(string.Join(", ", tableau));
}

Résultat :

4, 5
1, 2, 3
6, 7, 8, 9

Exemple : Trier par Première Valeur

listeTableaux.Sort((a, b) => a[0].CompareTo(b[0]));

6. Cas Avancé : Liste de Tableaux d’Objets

Vous pouvez créer une liste de tableaux contenant des objets personnalisés.

Classe Exemple

public class Personne
{
    public string Nom { get; set; }
    public int Age { get; set; }
}

Liste de Tableaux d’Objets

List<Personne[]> listeTableauxPersonnes = new List<Personne[]>
{
    new Personne[] { new Personne { Nom = "Jean", Age = 30 }, new Personne { Nom = "Marie", Age = 25 } },
    new Personne[] { new Personne { Nom = "Paul", Age = 40 } }
};

// Afficher les tableaux d'objets
foreach (Personne[] tableau in listeTableauxPersonnes)
{
    foreach (Personne personne in tableau)
    {
        Console.WriteLine($"Nom : {personne.Nom}, Âge : {personne.Age}");
    }
    Console.WriteLine();
}

Résultat :

Nom : Jean, Âge : 30
Nom : Marie, Âge : 25

Nom : Paul, Âge : 40

7. Méthodes Utiles

MéthodeDescription
Add(array)Ajoute un tableau à la liste.
Remove(array)Supprime un tableau spécifique.
RemoveAt(index)Supprime un tableau à l’index spécifié.
Sort(comparison)Trie la liste selon un critère.
CountRetourne le nombre de tableaux dans la liste.
Clear()Supprime tous les tableaux de la liste.

Exemple Complet

Voici un programme complet combinant plusieurs fonctionnalités d’une liste de tableaux.

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<int[]> listeTableaux = new List<int[]>();

        // Ajouter des tableaux
        listeTableaux.Add(new int[] { 5, 10, 15 });
        listeTableaux.Add(new int[] { 1, 2 });
        listeTableaux.Add(new int[] { 8, 3, 6, 4 });

        // Trier par longueur
        listeTableaux.Sort((a, b) => a.Length.CompareTo(b.Length));

        // Afficher les tableaux triés
        Console.WriteLine("Tableaux triés par longueur :");
        foreach (int[] tableau in listeTableaux)
        {
            Console.WriteLine(string.Join(", ", tableau));
        }

        // Rechercher une valeur dans les tableaux
        Console.WriteLine("\nRechercher une valeur :");
        int recherche = 6;
        bool trouve = false;

        foreach (int[] tableau in listeTableaux)
        {
            if (Array.IndexOf(tableau, recherche) >= 0)
            {
                Console.WriteLine($"Valeur {recherche} trouvée dans {string.Join(", ", tableau)}");
                trouve = true;
            }
        }

        if (!trouve)
        {
            Console.WriteLine($"Valeur {recherche} non trouvée.");
        }
    }
}

  • Une liste de tableaux combine la flexibilité des listes et l’efficacité des tableaux.
  • Elle est idéale pour gérer des collections de tableaux avec des tailles variables.
  • Vous pouvez effectuer des opérations comme l’ajout, la suppression, le tri, et la recherche de manière intuitive en utilisant des méthodes intégrées ou des comparateurs personnalisés.

Exemple Concret : Gestion d’un Système de Cours

Cet exemple montre comment utiliser une liste de tableaux en C# pour gérer un système de cours. Chaque cours contient une liste fixe d’étudiants, et tous les cours sont stockés dans une liste.


Description

Le programme permet de :

  1. Ajouter un nouveau cours avec ses étudiants.
  2. Afficher tous les cours et leurs étudiants.
  3. Rechercher un étudiant dans tous les cours.
  4. Trier les cours par le nombre d’étudiants.

Code Complet

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // Liste pour stocker les cours (chaque cours est un tableau de noms d'étudiants)
        List<string[]> listeCours = new List<string[]>();
        int choix;

        do
        {
            Console.WriteLine("\n=== Gestion des Cours ===");
            Console.WriteLine("1. Ajouter un cours");
            Console.WriteLine("2. Afficher tous les cours");
            Console.WriteLine("3. Rechercher un étudiant");
            Console.WriteLine("4. Trier les cours par nombre d'étudiants");
            Console.WriteLine("5. Quitter");
            Console.Write("Entrez votre choix : ");
            choix = int.Parse(Console.ReadLine());

            switch (choix)
            {
                case 1:
                    // Ajouter un cours
                    Console.Write("Entrez le nombre d'étudiants dans le cours : ");
                    int nombreEtudiants = int.Parse(Console.ReadLine());
                    string[] etudiants = new string[nombreEtudiants];

                    for (int i = 0; i < nombreEtudiants; i++)
                    {
                        Console.Write($"Entrez le nom de l'étudiant {i + 1} : ");
                        etudiants[i] = Console.ReadLine();
                    }

                    listeCours.Add(etudiants);
                    Console.WriteLine("Cours ajouté avec succès !");
                    break;

                case 2:
                    // Afficher tous les cours
                    if (listeCours.Count == 0)
                    {
                        Console.WriteLine("Aucun cours enregistré.");
                    }
                    else
                    {
                        Console.WriteLine("=== Liste des Cours ===");
                        for (int i = 0; i < listeCours.Count; i++)
                        {
                            Console.WriteLine($"Cours {i + 1} : {string.Join(", ", listeCours[i])}");
                        }
                    }
                    break;

                case 3:
                    // Rechercher un étudiant
                    Console.Write("Entrez le nom de l'étudiant à rechercher : ");
                    string recherche = Console.ReadLine();
                    bool trouve = false;

                    for (int i = 0; i < listeCours.Count; i++)
                    {
                        if (Array.Exists(listeCours[i], etudiant => etudiant == recherche))
                        {
                            Console.WriteLine($"L'étudiant {recherche} se trouve dans le cours {i + 1}.");
                            trouve = true;
                        }
                    }

                    if (!trouve)
                    {
                        Console.WriteLine($"L'étudiant {recherche} n'a pas été trouvé.");
                    }
                    break;

                case 4:
                    // Trier les cours par nombre d'étudiants
                    listeCours.Sort((a, b) => a.Length.CompareTo(b.Length));
                    Console.WriteLine("Les cours ont été triés par nombre d'étudiants.");
                    break;

                case 5:
                    // Quitter
                    Console.WriteLine("Au revoir !");
                    break;

                default:
                    Console.WriteLine("Choix invalide. Veuillez réessayer.");
                    break;
            }

        } while (choix != 5);
    }
}

Explication du Code

Structure de Données :

    • La liste listeCours contient des tableaux (string[]) représentant les étudiants de chaque cours.

    Ajout d’un Cours :

      • L’utilisateur spécifie le nombre d’étudiants dans le cours.
      • Un tableau de cette taille est créé, rempli avec les noms des étudiants, puis ajouté à la liste.

      Affichage des Cours :

        • Chaque tableau (cours) est affiché avec ses étudiants en utilisant string.Join.

        Recherche d’un Étudiant :

          • Array.Exists est utilisé pour vérifier si un étudiant donné existe dans un tableau spécifique.

          Tri des Cours :

            • La méthode Sort est utilisée pour trier les cours par leur nombre d’étudiants.

            Exemple d’Exécution

            1. Ajouter un cours :

            === Gestion des Cours ===
            1. Ajouter un cours
            2. Afficher tous les cours
            3. Rechercher un étudiant
            4. Trier les cours par nombre d'étudiants
            5. Quitter
            Entrez votre choix : 1
            Entrez le nombre d'étudiants dans le cours : 3
            Entrez le nom de l'étudiant 1 : Alice
            Entrez le nom de l'étudiant 2 : Bob
            Entrez le nom de l'étudiant 3 : Charlie
            Cours ajouté avec succès !

            2. Afficher tous les cours :

            === Gestion des Cours ===
            1. Ajouter un cours
            2. Afficher tous les cours
            3. Rechercher un étudiant
            4. Trier les cours par nombre d'étudiants
            5. Quitter
            Entrez votre choix : 2
            === Liste des Cours ===
            Cours 1 : Alice, Bob, Charlie

            3. Rechercher un étudiant :

            Entrez votre choix : 3
            Entrez le nom de l'étudiant à rechercher : Bob
            L'étudiant Bob se trouve dans le cours 1.

            4. Trier les cours par nombre d’étudiants :

            Entrez votre choix : 4
            Les cours ont été triés par nombre d'étudiants.

            5. Quitter :

            Entrez votre choix : 5
            Au revoir !

            Points Clés de l’Exemple

            Liste de Tableaux :

              • Chaque tableau représente un cours avec une liste fixe d’étudiants.
              • La liste permet de gérer dynamiquement plusieurs cours.

              Flexibilité :

                • Le programme peut gérer n’importe quel nombre de cours ou d’étudiants.

                Méthodes Utilisées :

                  • Array.Exists pour rechercher un élément dans un tableau.
                  • Sort pour trier les tableaux selon leur taille.

                  Ce programme est une solution concrète pour gérer une liste de tableaux en C#. Vous pouvez l’étendre pour inclure des fonctionnalités supplémentaires comme la suppression ou la modification de cours.

                  Autres articles

                  Guide : Liste de Tableaux C# vs...
                  En C#, une liste de Tableaux C# et une liste...
                  Read more
                  Guide : Python - Concatenation de chaînes...
                  La concaténation de chaînes de caractères en Python consiste à...
                  Read more
                  Utilisation des Pointeurs en C dans des...
                  Les pointeurs en C sont un outil puissant pour écrire...
                  Read more

                  Laisser un commentaire

                  Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *