Factoriel d’un nombre
Cesarking
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[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
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
A voir également:
- Factoriel d’un nombre
- Nombre de jours entre deux dates excel - Guide
- Nombre facile - Télécharger - Outils professionnels
- Ascii nombre de caractères - Guide
- Mettre un 0 devant un nombre dans excel - Guide
- En raison d'un nombre important d'échec de connexion snapchat - Forum Snapchat
2 réponses
Bonjour
Écrire un programme.... Dans quel langage ?
Écrire un programme.... Dans quel langage ?
Cesarking
Language c et c++
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...
Cesarking
Dans quel forum ??
jordane45
Messages postés
38486
Date d'inscription
Statut
Modérateur
Dernière intervention
4 752
C++
Cesarking
Comment faire pour y aller
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
- 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
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
forou
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
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
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.
Dans cet exemple, le calcul intermédiaire est dans une variable
unsigned long long int factorialet
iest un entier servant de compteur incrémenté. Avant de multiplier le calcul intermédiaire par une nouvelle valeur de
ion vérifie que
factorial <= ULLONG_MAX / i.
ULLONG_MAXest 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.