Bonjour.
lire mes commentaires...
#include<stdio.h>
int main()
{
// attention : en règle générale, aérer son code
// penser qu'il sera lu par un autre
int n, i, j ;
// attention: une factorielle croit très vite
// utiliser un flottant ou un double flottant
// et ça evite une opération de
// cast (float)(factorielle) dans une boucle
int factoriel = 1 ;
// attention : utiliser les () ou les [] pour des index
// P : Un-1 n devrait s'écrire P = U[n-1] * U[n]
float P = 1.0 ;
// A est le 1/n!
float A ;
// b = Un-1
// attention : toujours initialiser un flottant avec comme fin ".chiffre(s)"
float b = 1.0 ;
// c = Un
float c ;
do
{
printf("veiller entrer un nombre positive n:\n") ;
scanf("%d", &n) ;
} while (n <= 0) ;
printf("\n") ;
// attention : aligner les { avec les } de même indentation
// plus facile à déboguer
if (n == 1)
// attention : garder la même cohérence avec le reste des affichages
printf("U_n = %f\n", 1.0) ;
else
{
// attention : il faut commenter un minimum
// ça permet au programmeur d'éclaircir ses idées sur ce qu'il fait
// ça permet à un autre programmeur de comprendre ce qu'a voulu faire l'auteur du programme
// calcul factorielle
for (i = 2 ; i <= n; i++)
{
for (j = 1 ; j <= i ; j++)
{
factoriel *= j ;
A = 1 / (float)factoriel ;
printf("(1) n = %d i = %d j = %d F = %d\n", n, i, j, factoriel) ;
printf(" A = %20.19f\n\n", A) ;
}
// attention : variable I inexistante !!!
for (j = 2 ; j <= i ; j++)
{
// ta déclaration int P = 1 provoque une erreur de calcul (NaN) avec mon compilateur
P *= b ;
// en principe, calcul de P = U[n-1] * U[n] ???
// problème : d'après l'énoncé on calcule U[n] = U[n-1]^n
printf("(2) n = %d i = %d j = %d P = %20.19f\n\n", n, i, j, P) ;
}
c = P * A ;
printf("(3) n = %d i = %d j = %d c = %20.19f\n", n, i, j, c) ;
b = c ;
printf(" b = %20.19f\n", b) ;
P = 1 ;
printf(" P = %20.19f\n", P) ;
factoriel = 1 ;
printf("\n") ;
// dans une fin de boucle éviter d'initialiser des variables pour l'itération suivante
}
printf("U_n = %20.19f\n", c) ;
}
// getch() ;
return(0) ;
}