C-SHARP - 4.2 Exerice : Tableaux avancés
Exercice de mise en pratique sur les tableaux à deux dimensions et les boucles imbriquées vus précédemment. Le programme doit demander un mot à l'utilisateur, parcourir une grille 5×5 et afficher combien de fois ce mot y apparaît, ou indiquer qu'il n'y figure pas.
Énoncé
Si le mot est trouvé : « Le mot que vous avez tapé : [mot] a été trouvé n fois dans la liste ». Sinon : « Le mot que vous avez tapé ne se trouve pas dans la liste des mots. » Indice : un compteur sera nécessaire pour gérer les occurrences multiples.
Correction
On crée le tableau 5×5 de strings (en utilisant var), on demande la saisie via Console.ReadLine() et on stocke le résultat. Astuce essentielle : tous les mots du tableau sont en minuscules. Si l'utilisateur tape « Lundi » ou « LUNDI », la comparaison directe échouera. On applique donc ToLower() sur la saisie pour normaliser :
Console.WriteLine("Entrez un mot :");
string mot_utilisateur = Console.ReadLine().ToLower();
int compteur = 0;
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
if (liste_mots[i, j] == mot_utilisateur)
{
compteur++;
}
}
}
if (compteur > 0)
{
Console.WriteLine(string.Format(
"Le mot que vous avez tape : {0} a ete trouve {1} fois dans la liste",
mot_utilisateur, compteur));
}
else
{
Console.WriteLine("Le mot que vous avez tape ne se trouve pas dans la liste des mots");
}
Les deux boucles for imbriquées parcourent toutes les cases (5 lignes × 5 colonnes). Le test d'égalité se fait dans la boucle interne, qui inspecte chaque colonne d'une ligne donnée. Le compteur est incrémenté à chaque correspondance — un mot peut donc apparaître plusieurs fois et être correctement comptabilisé. À la fin, on choisit entre les deux messages selon la valeur du compteur.
Tests
Avec « jour », deux occurrences trouvées (le tableau d'exemple en contient bien deux). Avec « LUN » en majuscules, grâce à ToLower(), le programme trouve quand même la correspondance. Sans cette transformation, la recherche échouerait. Avec un mot absent comme « maison », le message d'erreur s'affiche correctement. Pensez systématiquement à ToLower() ou ToUpper() dans vos comparaisons pour éviter les surprises liées à la casse — c'est un réflexe à acquérir.
En résumé
Cette leçon présente un exercice pratique sur les tableaux multidimensionnels en C# : créer un programme qui demande à l'utilisateur d'entrer un mot, puis chercher ce mot dans un tableau 5x5 et compter ses occurrences. La correction introduit les concepts clés comme Console.ReadLine() pour l'interaction utilisateur et les méthodes ToLower()/ToUpper() pour gérer les différences de casse lors de la comparaison de chaînes.
Points clés
- Créer un tableau multidimensionnel de strings avec la syntaxe `new string[5,5]` pour 5 lignes et 5 colonnes
- Utiliser Console.ReadLine() pour récupérer une saisie utilisateur stockée dans une variable string
- Appliquer la méthode ToLower() pour convertir le mot saisi en minuscules avant de le comparer aux éléments du tableau
- Implémenter un compteur pour dénombrer les occurrences du mot trouvé dans le tableau
- Gérer les deux cas possibles : affichage du mot trouvé avec son nombre d'occurrences, ou message d'absence du mot
- Considérer tous les cas possibles (majuscules, minuscules, casse mixte) pour que le programme soit opérationnel en toutes situations
Questions fréquentes
Comment créer un tableau multidimensionnel en C# ?
Utiliser la syntaxe `var nomTableau = new string[5,5]` pour créer un tableau de strings avec 5 lignes et 5 colonnes. Il faut spécifier le nombre de lignes et de colonnes entre les crochets, séparés par une virgule.
Comment gérer les différences de casse lors de la comparaison de chaînes en C# ?
Utiliser la méthode ToLower() pour convertir toute chaîne en minuscules avant la comparaison, ou ToUpper() pour la convertir en majuscules. Ces méthodes retournent une copie modifiée de la chaîne sans affecter l'original.
Quelle fonction permet de récupérer une saisie utilisateur en C# ?
La fonction Console.ReadLine() permet de lire ce que l'utilisateur tape au clavier et retourne toujours une chaîne de caractères (string) stockable dans une variable.