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.

                  AZ

                  Share
                  Published by
                  AZ

                  Recent Posts

                  Fiche Dyslexie : Je repère le bon mot | Guide simple pour les parents

                  Chaque mot lu correctement représente une petite victoire pour un enfant dyslexique. Pourtant, derrière une…

                  7 heures ago

                  PCG : un été différent pour les enfants dyslexiques

                  Chaque été, de nombreux parents d'enfants dyslexiques cherchent le juste équilibre entre repos et maintien…

                  11 heures ago

                  Dyslexie chez l’enfant : guide complet pour aider son enfant à progresser à la maison

                  La dyslexie représente un défi quotidien pour de nombreux enfants, mais aussi pour leurs parents…

                  11 heures ago

                  Modèle Excel Bilan comptable d’association ( Gratuit )

                  Entre la préparation d'un événement, la recherche de partenaires, l'organisation des activités et le suivi…

                  1 jour ago

                  PGC Chantier Simplifié : Modèle Word Premium Gratuit pour BTP

                  La réussite d’une opération de construction repose autant sur la qualité technique des travaux que…

                  1 jour ago

                  Construire une argumentation : transformer une idée en démonstration convaincante

                  Défendre une idée, convaincre un interlocuteur ou développer une réflexion cohérente demande bien davantage qu'une…

                  1 jour ago

                  This website uses cookies.