Les tableaux : stocker et parcourir
Ranger plusieurs valeurs sous un même nom, les lire, les parcourir et chercher dedans.
Ce que tu vas apprendre
- Déclarer un tableau et accéder à ses cases par leur indice
- Lire
nvaleurs dans un tableau puis le parcourir - Chercher, compter et s'arrêter au bon moment
Déclarer un tableau
int t[100]; réserve 100 cases d'entiers. Les cases sont numérotées de 0 à 99 : t[0] est la première, t[99] la dernière. L'indice peut être une variable : t[i].
La taille doit être connue à la compilation. Dans les exercices, l'énoncé indique un nombre maximum de valeurs : déclare un tableau de cette taille, puis n'utilise que les n premières cases.
Lire puis parcourir
On lit d'abord n, puis on remplit les cases avec une boucle : for (int i = 0; i < n; i++) scanf("%d", &t[i]); (avec &, car t[i] est une case simple).
Ensuite, une autre boucle de 0 à n - 1 permet de calculer, chercher ou afficher. L'intérêt du tableau est de pouvoir revenir sur les valeurs autant de fois que nécessaire.
Chercher
Pour trouver la position d'une valeur, on parcourt le tableau et on s'arrête à la première case qui convient (break). On prévoit une valeur de résultat pour « pas trouvé », souvent -1.
Exemples commentés
1.Doubler chaque valeur
#include <stdio.h>
int main(void) {
int t[100], n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &t[i]); // & : t[i] est une case
}
for (int i = 0; i < n; i++) {
if (i > 0) {
printf(" ");
}
printf("%d", 2 * t[i]);
}
printf("\n");
return 0;
}Entrée
4 1 5 -2 8
Sortie
2 10 -4 16
Une boucle pour lire, une boucle pour traiter : c'est le schéma de base des exercices sur les tableaux.
2.Position du premier négatif
#include <stdio.h>
int main(void) {
int t[100], n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &t[i]);
}
int position = -1; // -1 : pas trouvé
for (int i = 0; i < n; i++) {
if (t[i] < 0) {
position = i;
break; // inutile de continuer
}
}
printf("%d\n", position);
return 0;
}Entrée
5 3 8 -1 4 -6
Sortie
2
Les indices commencent à 0 : -1 est dans la troisième case, d'indice 2.
Chaque exemple est compilé et exécuté automatiquement pour garantir la sortie affichée.
Erreurs fréquentes
Dépasser du tableau
À éviter
for (int i = 0; i <= n; i++) // lit t[n]
À préférer
for (int i = 0; i < n; i++)
Avec n valeurs, le dernier indice est n - 1. Lire ou écrire t[n] touche une mémoire qui n'appartient pas au tableau : le C ne vérifie rien et le programme peut se comporter de façon imprévisible.
Oublier d'initialiser
Les cases d'un tableau local contiennent n'importe quoi au départ. Pour un tableau de compteurs, initialise-le : int compte[10] = {0}; met toutes les cases à 0.
Entraîne-toi
6 questions variées pour fixer la leçon : choix, résultat à prévoir, ligne à compléter, code à remettre dans l'ordre, erreur à trouver.
À toi de jouer !
18 exercices pour mettre cette leçon en pratique, du plus simple au plus avancé.