Factoriel d’un nombre

Fermé
Cesarking - 19 déc. 2018 à 09:31
[Dal] Messages postés 6175 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 30 avril 2024 - 23 janv. 2019 à 16:13
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 38150 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 avril 2024 4 651
19 déc. 2018 à 09:51
Bonjour

Écrire un programme.... Dans quel langage ?
0
Language c et c++
0
jordane45 Messages postés 38150 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 avril 2024 4 651 > Cesarking
20 janv. 2019 à 19:48
Je déplace donc la question dans le bon forum...
0
Dans quel forum ??
0
jordane45 Messages postés 38150 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 avril 2024 4 651
20 janv. 2019 à 20:13
C++
0
Comment faire pour y aller
0
[Dal] Messages postés 6175 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 30 avril 2024 1 083
Modifié le 23 janv. 2019 à 13:03
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 6175 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 30 avril 2024 1 083
Modifié le 23 janv. 2019 à 16:13
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