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.

1 réponse

jumulka Messages postés 12146 Date d'inscription vendredi 14 décembre 2012 Statut Membre Dernière intervention 13 avril 2024 4 553
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 12146 Date d'inscription vendredi 14 décembre 2012 Statut Membre Dernière intervention 13 avril 2024 4 553
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