Factoriel d’un nombre

Cesarking -  
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
S’il vous plaît j’aimerais écrire un programme qui calcule le factoriel d’un nombre avec la boucle répéter et je n’évite sais comment faire svp aidez moi


Configuration: iPhone / Safari 11.0

2 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour

Écrire un programme.... Dans quel langage ?
0
Cesarking
 
Language c et c++
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Cesarking
 
Je déplace donc la question dans le bon forum...
0
Cesarking
 
Dans quel forum ??
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
C++
0
Cesarking
 
Comment faire pour y aller
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
Salut Cesarking,

Il n'y a pas de réelle difficulté dans le calcul proprement dit. Il suffit de déclarer une variable compteur initialisée à 1 et une variable de résultat initialisée à 1 aussi, et d'utiliser une boucle
for
ou
while
, ou
do ... while
, incrémentant à chaque itération le compteur, multipliant le contenu de cette variable compteur avec celui de la variable résultat, jusqu'à ce que (1) le compteur atteigne le nombre dont la factorielle est recherchée, ou (2) que la capacité de représentation de nombres entiers du type choisi atteigne sa limite. Dans ces deux cas, il faut sortir de la boucle :
- dans le cas (1), en affichant le résultat
- dans le cas (2), en affichant un message d'erreur indiquant que ne résultat dépasse les capacités

C'est ce dernier cas qui est le moins évident à traiter. Tu as une bonne méthode là illustrée là : https://stackoverflow.com/questions/47244227/how-to-determine-the-maximum-value-for-which-a-program-can-calculate-factorial-u (pour faire cette vérification avant de multiplier)

Dal
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
dans ce topic sur SO, c'est à cette réponse que je fais allusion (n'utilise pas le code posté par la personne posant la question, qui n'est pas fiable, mais celui-là) : https://stackoverflow.com/questions/47244227/how-to-determine-the-maximum-value-for-which-a-program-can-calculate-factorial-u/47244258#47244258

Dans cet exemple, le calcul intermédiaire est dans une variable
unsigned long long int factorial
et
i
est un entier servant de compteur incrémenté. Avant de multiplier le calcul intermédiaire par une nouvelle valeur de
i
on vérifie que
factorial <= ULLONG_MAX / i
.

ULLONG_MAX
est déterminé pour ton compilateur dans l'entête standard
limits.h
...

Si ce test échoue, c'est que l'on dépasserait donc ULLONG_MAX en multipliant, et la factorielle ne peut être calculée avec ce type.
0