Tableaux C++
Tableaux C++
Tableaux C++
Une variable entière de type int ne peut contenir qu'une seule valeur. Si on veut
stocker en mémoire un ensemble de valeurs, il faut utiliser une structure de
données appelée tableau.
Dans ce chapitre, les tableaux seront statiques : leur taille sera fixée une fois
pour toute. Il s'agit d'une structure de donnée absolument fondamentale pour
stocker une liste d'éléments.
Un exemple de tableau
Déclaration d'un tableau : int a[10]; a est un tableau de 10 cases. Chaque case
contient un entier (type int). La première case s’appelle a[0]. La deuxième
case s’appelle a[1] et la dixième case a[9].
Remarque : la case a[10] n’existe pas ! Car la première case possède l'indice 0.
Si vous essayez d'accéder à une case dont l'indice n'est pas valide, le programme
"plantera".
Sur chaque case, on peut effectuer les opérations habituelles : addition,
affectation…etc…
Algorithme utilisé : on va stocker notre plus petit élément dans une variable
ppt. On commence par initialiser ppt au premier élément du tableau (d'indice
zéro). On parcourt alors tous les autres éléments du tableau en comparant
l'élément courant à ppt et en mettant éventuellement à jour la valeur de ppt. Il
faut maintenant formaliser cet algorithme.
Exemple 4
#include <iostream>
using namespace std;
int main()
{
int t[4], i, ppt;
for(i=0; i<4; i++)
{
cout << "Tapez la valeur numéro " << i << " : ";
cin >> t[i];
}
ppt = t[0];
for(i=1; i<4; i++) if(ppt>t[i]) ppt=t[i];
cout << "La plus petite valeur est "<< ppt <<endl;
return 0;
}
• Explications
• Pour calculer le plus petit élement d’un tableau, on initialise ppt à t[0].
• On parcourt ensuite le tableau de la case 1 à la dernière case d'indice 3 en
comparant t[i] à ppt. Si t[i] est plus petit que le plus petit courant ppt alors on
copie t[i] dans ppt (t[i] devient alors le nouveau plus petit courant).
Dans le cas contraire, on ne modifie pas la valeur de ppt.
• On affiche finalement la valeur de ppt en dehors de la boucle.
• Exécution
Tapez la valeur numero 0 : 9
Tapez la valeur numero 1 : 7
Tapez la valeur numero 2 : 11
Tapez la valeur numero 3 : 15
La plus petite valeur est 7
Exemple 5 : inverser l'ordre des éléments d'un tableau
#include <iostream>
using namespace std;
int main()
{
int t[6], i, a;
for(i=0; i<6; i++)
{
cout << "Tapez la valeur numéro " << i << " : ";
cin >> t[i];
}
for(i=0; i<3; i++)
{
a = t[i];
t[i] = t[5-i];
t[5-i] = a;
}
for(i=0; i<6; i++)
cout << "La valeur numéro " << i << " est " << t[i] << endl;
return 0;
}
• Explications
• Pour inverser le contenu du tableau t à 6 cases il y a 3 étapes :
Étape 0 : on échange t[0] et t[5]
Étape 1 : on échange t[1] et t[4]
Étape 2 : on échange t[2] et t[3]
• A l’étape i, on échange t[i] et t[5-i].
• Chaque étape sera numérotée de i=0 à i=2.
• Attention de ne pas échanger 2 fois le contenu de chaque case en écrivant par
erreur :
for(i=0; i<6; i++){ a=t[i]; t[i]=t[5-i]; t[5-i]=a;}
• Exécution
Tapez la valeur numero 0 : 9
Tapez la valeur numero 1 : 7
Tapez la valeur numero 2 : 11
Tapez la valeur numero 3 : 15
Tapez la valeur numero 4 : 16
Tapez la valeur numero 5 : 4
La valeur numero 0 est 4
La valeur numero 1 est 16
La valeur numero 2 est 15
La valeur numero 3 est 11
La valeur numero 4 est 7
La valeur numero 5 est 9
Suppression et tassement
On veut supprimer toutes les valeurs valant 9 dans un tableau de 6 cases en
décalant tous les élément vers la gauche et en remplaçant ces éléments par des 0
placés à la fin du tableau.
Exemple :
Valeur initiale du tableau : 9, 8, 9, 9, 9, 6
Valeur finale du tableau : 8, 6, 0, 0, 0, 0
Ce problème paraît simple mais on trouve tellement de solutions fausses à ce
problème que, désespérés, nous avons fini par le mettre dans le cours ! Par
exemple, il est complètement inutile d'écrire 2 boucles imbriquées.