Comment appliquer une puissance à chaque élément d'un tableau en programmation
Ce chapitre est la suite directe des pointeurs, et va vous faire comprendre un peu plus leur utilité. Les tableaux sont très utilisés en C, car ils permettent d'organiser une série de valeurs. Comprenez le fonctionnement des tableaux en mémoire. Voici le schéma d'un tableau de 4 cases en mémoire qui commence à l'adresse 1600. Un tableau de 4 cases. Lorsque vous demandez à créer un tableau de 4 cases en mémoire, votre programme demande au système d'exploitation la permission d'utiliser 4 cases en mémoire. Chaque case du tableau contient un nombre du même type. Si le tableau est de type int, alors chaque case du tableau contiendra un int. On ne peut pas faire de tableau contenant à la fois des int et des double, par exemple. Définissez un tableau. Voyons comment définir un tableau de 4 int : int tableau[4]; Voilà. Il suffit de rajouter entre crochets le nombre de cases que vous voulez mettre dans votre tableau. tableau[3] = 8;
Je ne vois pas le rapport entre les tableaux et les pointeurs ? En fait, si vous écrivez juste tableau, vous obtenez un pointeur. C'est un pointeur sur la première case du tableau. printf("%d", tableau[0]); 10. De même pour les autres indices. printf("%d", *tableau); 10. Il est aussi possible d'obtenir la valeur de la seconde case avec *(tableau + 1) (adresse de tableau + 1). int tableau[taille]; Or cela n'est pas forcément reconnu par tous les compilateurs, certains planteront sur la seconde ligne. Le langage C que je vous enseigne depuis le début (appelé le C89) n'autorise pas ce genre de choses. Nous considèrerons donc que faire cela est interdit. int tableau[5];
Mais alors… il est interdit de créer un tableau dont la taille dépend d'une variable ? C'est possible, même en C89. Mais pour faire cela, nous utiliserons une autre technique (plus sûre et qui marche partout), appelée l'allocation dynamique. Nous verrons cela plus loin dans ce cours. Parcourez un tableau. Supposons que je veuille maintenant afficher les valeurs de chaque case du tableau. Je pourrais faire autant de printf qu'il y a de cases, mais ce serait répétitif et lourd. Et imaginez un peu la taille de notre code si on devait afficher le contenu de chaque case du tableau une à une ! Le mieux est de se servir d'une boucle. 8 Ce qui est pratique, c'est qu'on peut mettre une variable entre crochets. 0
Il existe une autre façon d'initialiser un tableau un peu plus automatisée en C. Elle consiste à écrire tableau[4] = {valeur1, valeur2, valeur3, valeur4}. 0 Mais en fait, c'est même mieux que ça : vous pouvez définir les valeurs des premières cases du tableau, toutes celles que vous n'aurez pas renseignées seront automatiquement mises à 0. Ainsi, si je fais : int tableau[4] = {10, 23}; // Valeurs insérées : 10, 23, 0, 0… la case n° 0 prendra la valeur 10, la n° 1 prendra 23, et toutes les autres prendraient la valeur 0 (par défaut). Comment initialiser tout le tableau à 0 en sachant ça ? Il suffit d'initialiser au moins la première valeur à 0, et toutes les autres valeurs non indiquées prendront la valeur 0. int tableau[4] = {0}; // Toutes les cases du tableau seront initialisées à 0. Cette technique a l'avantage de fonctionner avec un tableau de n'importe quelle taille (là, ça marche pour 4 cases, mais s'il en avait eu 100, ça aurait été bon aussi).
Allez, pour terminer, je vous montre une dernière méthode pour initialiser un tableau. Elle consiste à écrire le nom de la variable avec les crochets vides, et à mettre comme précédemment les valeurs des cases entre accolades et séparées par une virgule. Au moment de la compilation, le compilateur va déduire automatiquement que c’est un tableau de taille "n" en fonction du nombre de valeurs qu’il y a entre accolades. Par exemple : int tableau[] = {12, 19, 18, 2}; Ici, le compilateur déduira que le tableau est de taille 4 et les cases seront initialisées en fonction des nombres entre accolades. Vous aurez à coup sûr souvent besoin d'afficher tout le contenu de votre tableau. Pourquoi ne pas écrire une fonction qui fait ça ? Ça va nous permettre de découvrir comment on envoie un tableau à une fonction (ce qui m'arrange).
Lire aussi: Modifier Activité Kbis Auto-Entrepreneur
Écrivez une fonction pour afficher le contenu d'un tableau. Pour cela, il va falloir envoyer deux informations à la fonction : Le tableau (enfin, l'adresse du tableau). Et aussi et surtout sa taille ! En effet, notre fonction doit être capable d'initialiser un tableau de n'importe quelle taille. Or, dans votre fonction, vous ne connaissez pas la taille de votre tableau. 0 La fonction n'est pas différente de celles que l'on a étudiées dans le chapitre sur les pointeurs. Elle prend en paramètre un pointeur sur int(notre tableau), ainsi que la taille du tableau (très important pour savoir quand s'arrêter dans la boucle !). Tout le contenu du tableau est affiché par la fonction via une boucle. Notez qu'il existe une autre façon d'indiquer que la fonction reçoit un tableau. Plutôt que d'indiquer que la fonction attend un int *tableau, mettez ceci : void affiche(int tableau[], int tailleTableau). Cela revient exactement au même, mais la présence des crochets permet au programmeur de bien voir que c'est un tableau que la fonction prend, et non un simple pointeur. Cela permet d'éviter des confusions. J'utilise personnellement tout le temps les crochets dans mes fonctions, pour bien montrer que la fonction attend un tableau. Je vous conseille de faire de même. Pour vous aider, voici le prototype de la fonction à créer : int sommeTableau(int tableau[], int tailleTableau); Ensuite, créez une fonction moyenne Tableau qui calcule et renvoie la moyenne des valeurs.
Utiliser des boucles pour appliquer une puissance à chaque élément
En partant du principe que vous avez un tableau d'entiers ou de nombres à puissance, l'idée est d'appliquer une opération de puissance à chaque élément et d'enregistrer le résultat dans un nouveau tableau ou de modifier le tableau en place. On peut réaliser cela avec une boucle qui itère sur les indices du tableau et qui met à jour chaque élément avec la puissance désirée. Par exemple, pour élever chaque élément à la puissance p, on peut écrire: for (int i = 0; i < tailleTableau; i++) { tableau[i] = puissance(tableau[i], p); }. Cette approche est compatible avec les versions C89 si vous utilisez les bonnes règles de déclaration et que vous avez une fonction puissance adaptée ou utilisez l'opérateur x^y via une fonction récursive ou une boucle multiplications.
Pour afficher tout le contenu du tableau après application de la puissance, on peut utiliser la même boucle en appelant printf sur chaque élément: for (int i = 0; i < tailleTableau; i++) { printf("%d ", tableau[i]); }. Cette technique montre clairement comment les valeurs évoluent suite à l'opération de puissance et permet de vérifier la correction du processus.
En résumé, les tableaux stockent des éléments du même type, les indices commencent à 0, et l'allocation peut être statique ou dynamique. L'application d'une puissance à chaque élément se fait naturellement via une boucle qui met à jour les éléments un par un, soit dans un tableau existant, soit dans un tableau déduit par initialisation avec des accolades. L'utilisation des fonctions afférentes et l'envoi de taille garantissent la robustesse et la portabilité du code.
Utiliser la notation des puissances - Quatrième
| Opération | Exemple | Résultat |
|---|---|---|
| Initialiser tableau | int t[4] = {2, 3, 4, 5}; | Tableau prêt |
| Appliquer puissance p | for (i=0; i<4; i++) t[i] = pow(t[i], p); | Tableau modifié |
| Afficher contenu | for (i=0; i<4; i++) printf("%d ", t[i]); | Affichage des valeurs |
En PowerShell et PHP, les tableaux restent des concepts fondamentaux mais les syntaxes diffèrent: PowerShell propose des méthodes d'accès et d'opérations sur les éléments, tandis que PHP offre des fonctions dédiées pour manipuler les tableaux et effectuer des transformations similaires à des boucles en C. Dans tous les cas, comprendre le concept sous-jacent d’itération et d’application d’opérations élément par élément est essentiel pour travailler efficacement avec des structures de données homogènes.
Lire aussi: INPI et Micro-Entreprise : Démarches
Lire aussi: Comment Calculer la TVA ?
balises:
