Somme de factorielles
, par
Sujet (contrôle de TP 2009)
Soit une variable entière n initialisée à une valeur positive. ècrire un programme qui :
calcule la factorielle de n (le produit des en- tiers de 1 à n) et affiche le résultat. Exemple de sortie (pour n = 3) :
puis calcule la somme des factorielles des n premiers entiers positifs. Exemple de sortie (pour n = 3) :
Le programme doit fonctionner pour n’importe quelle valeur positive de n.
Solution
Note : lorsqu’on utilise un accumulateur (additif ou multiplicatif), il faut penser à l’initialiser correctement. Ici il fallait penser à remettre l’accumulateur multiplicatif fact à 1 avant chaque nouveau calcul d’une factorielle.
- /* Declaration de fonctionnalites supplementaires */
- #include <stdlib.h> /* pour EXIT_SUCCESS */
- #include <stdio.h> /* pour printf() */
- /* Declaration des constantes et types utilisateur */
- /* Declaration des fonctions utilisateur */
- /* Fonction principale */
- int main()
- {
- /* Declaration et initialisation des variables */
- int n = 5;
- int fact = 1;
- int i; /* var de boucle */
- int somme = 0; /* accumulateur de somme */
- int x; /* var de boucle */
- /* Question 1 */
- /* calcul de la factorielle */
- for (i = 1; i <= n; i = i + 1) /* pour i = 1, ..., n */
- {
- fact = fact * i;
- }
- /* affichage */
- /* Question 2 */
- for (x = 1; x <= n; x = x + 1)/* pour chaque x entre 1 et n */
- {
- /* calculer factorielle de x */
- fact = 1; /* reinitialisation de l'accumulateur fact */
- for (i = 1; i <= x; i = i + 1) /* pour i = 1, ..., n */
- {
- fact = fact * i;
- }
- /* l'ajouter a la somme */
- somme = somme + fact;
- }
- /* Valeur fonction */
- return EXIT_SUCCESS;
- }
- /* Definition des fonctions utilisateur */