Besoin d'une correction d'un exercice

Fermé
TonTonChief
Messages postés
9
Date d'inscription
mardi 27 mars 2018
Statut
Membre
Dernière intervention
27 mars 2018
- Modifié le 27 mars 2018 à 10:33
TonTonChief
Messages postés
9
Date d'inscription
mardi 27 mars 2018
Statut
Membre
Dernière intervention
27 mars 2018
- 27 mars 2018 à 12:43
Bonjour a tous, j'ai un gros soucis avec un exercice que je tente de résoudre. Pouvez vous m'aider svp à le corriger ?

Écrire un programme C qui demande un entier naturel N, et qui calcule sa factorielle en respectant que 0!=1.
NB : la factorielle de 8, notée 8 !, vaut 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8
a) Utiliser while,
b) Utiliser for.

B) For 
#include <math.h>
#include <stdio.h>
#include <stdlib.h>

int main ()
{
int nbre, i, résultat ;

printf ("Veuillez saisir un nombre :/n")
scanf ("%, &nbre );
resultat = i ; 
for ( i= 8; i<=nbre ; i++) ;
{
resultat = resultat * i ; 
}
printf ( " La factorielle de %d est %/n", nbre , resultat ) ; 
}
A) While 

#include <math.h>
#include <stdio.h>
#include <stdlib.h>

int main ()
{
int nbre, i, résultat ;

printf ("Veuillez saisir un nombre :/n")
scanf ("%, &nbre );
resultat = i ; 
while ( i= 8; i<=nbre ; i++) ;
{
resultat = resultat * i ; 
}
printf ( " La factorielle de %d est %/n", nbre , resultat ) ; 
}





EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
A voir également:

1 réponse

jumulka
Messages postés
11673
Date d'inscription
vendredi 14 décembre 2012
Statut
Membre
Dernière intervention
25 mai 2022
4 516
Modifié le 27 mars 2018 à 10:49
Bonjour,
d'abord initialise tes variables à 0 (sinon elles ont une valeur que je ne sais pas d'ou ça vient)

ensuite dans la déclaration ta variable "resultat" à un accent "résultat" enlève le.

dans ton scanf tu ouvre un guillemet que tu ne ferme pas, ton scanf devrait plus être sur la forme : scanf("%d",&nbre);

resultat = i ne sert à rien la.

ton instruction dans le for n'a pas de sens ton i=8 et tant que i est inférieur ou égale à nbre il fait la boucle, si le chiffre que tu rentre sur nbre est inférieur à 8 il ne fera pas la boucle et pas de ";" après le for et le while, si j'ai bien compris le factoriel avec ton explication, c'est la multiplication des nombres jusqu'au nombre voulue ? si c'est ça ton while serait plutot :
for( i = 0 ; i <= nbre ; i++)

dans tes printf il faut mettre \n et non /n, et il te manque le d du %d avant le \n dans le dernier
2
TonTonChief
Messages postés
9
Date d'inscription
mardi 27 mars 2018
Statut
Membre
Dernière intervention
27 mars 2018

27 mars 2018 à 10:33
Oui, mais j'arrive pas les introduire trop complexe. Déja qu'il y a deux boucle a gérer !
0
jumulka
Messages postés
11673
Date d'inscription
vendredi 14 décembre 2012
Statut
Membre
Dernière intervention
25 mai 2022
4 516
27 mars 2018 à 10:48
oui mais tu peux déjà corrigé ce que j'ai dis, sauf le while jme suis complétement gouré ce que j'ai écris était pour le for.
pour le while tu déclare de i avant et tu l'incrémente après :
int i = 0;
while(i<=nbre)
{
  resultat = resultat * i;
  i++;
}
0
Pinzou76
Messages postés
609
Date d'inscription
dimanche 17 septembre 2017
Statut
Membre
Dernière intervention
25 février 2019
186
27 mars 2018 à 10:51
Bonjour,

resultat=1;
for(i=nbre;i>0;i--)
{
resultat = resultat*i;
}


Ca ne serait pas plus logique comme ça ? Je ne comprends pas du tout a quoi sert le "i=8"
0
Pinzou76
Messages postés
609
Date d'inscription
dimanche 17 septembre 2017
Statut
Membre
Dernière intervention
25 février 2019
186
Modifié le 27 mars 2018 à 10:54
Et pour le while la syntaxe de mon collègue est fausse. Ca serait plutôt

int i=1, resultat=1;
while(i<=nbre)
{
resultat=resultat*i;
i++;
}
0
TonTonChief
Messages postés
9
Date d'inscription
mardi 27 mars 2018
Statut
Membre
Dernière intervention
27 mars 2018

27 mars 2018 à 10:57
D'accord, c'est noté. Merci beaucoup
Et pour la factorielle 8, il ne devrait pas avoir une condition par rapport a 8 ou quelque chose dans ce genre ?
0