Calculer la somme des éléments d'un tableau en C et C++
Dans cette leçon, vous allez additionner toutes les valeurs d'un tableau avec une boucle et une variable d'accumulation.
Introduction
Une variable d'accumulation (accumulator) recueille le résultat au fil des tours de boucle. Pour additionner un tableau, elle commence à 0 et reçoit chaque élément l'un après l'autre.
Points importants
- Activez les avertissements du compilateur (compiler warnings) et corrigez-les tous.
- Comprenez bien le type et la durée de vie (lifetime) de chaque valeur.
- Vérifiez toujours les données d'entrée et les limites des indices de tableau.
Voir comment ça marche
Appuyez sur Étape pour exécuter la boucle pas à pas. Observez la vérification de la condition, l'exécution du corps et le tableau de suivi qui grandit ligne par ligne.
Exemples de code C et C++
#include <stdio.h>
int main(void) {
int values[] = {2, 4, 6, 8, 10}; int total = 0;
// sizeof determines the local array length.
for (size_t i = 0; i < sizeof values / sizeof values[0]; ++i) total += values[i];
printf("sum=%d\n", total);
}
sum=30
#include <iostream>
#include <numeric>
#include <vector>
int main() {
std::vector values{2, 4, 6, 8, 10};
// accumulate folds the range into one total.
std::cout << "sum=" << std::accumulate(values.begin(), values.end(), 0) << '\n';
}
sum=30
Comparaison entre C et C++
La variable total est initialisée à 0, puis la boucle ajoute chaque élément à total exactement une fois. L'expression sizeof values / sizeof values[0] calcule le nombre d'éléments du tableau, la boucle reste donc correcte même si vous ajoutez ou retirez des éléments. Le résultat est sum=30.
C utilise de petites fonctions procédurales et montre ouvertement comment les données sont représentées en mémoire.
C++ permet toujours de travailler à bas niveau, mais ajoute des types de bibliothèque et des abstractions plus sûres.
Exercices d'approfondissement
Exécutez les deux versions, puis modifiez le code pour observer la différence de sécurité qu'apporte chaque langage.
- Testez des entrées invalides et des valeurs limites.
- Compilez avec les options -Wall -Wextra -Wpedantic pour activer davantage d'avertissements.
- Placez les déclarations communes dans un fichier d'en-tête et l'implémentation dans un fichier séparé.
S'entraîner avec un défi
Utilisez le contenu de cette leçon pour résoudre un vrai problème. Chaque défi s'exécute dans le navigateur, avec des tests instantanés et une revue par l'IA.
Tous les défis