Factorielle
Fermé
maria3100
Messages postés
14
Date d'inscription
mardi 5 avril 2016
Statut
Membre
Dernière intervention
20 décembre 2016
-
Modifié par *_Francis_* le 5/05/2016 à 10:32
maria3100 Messages postés 14 Date d'inscription mardi 5 avril 2016 Statut Membre Dernière intervention 20 décembre 2016 - 7 mai 2016 à 22:21
maria3100 Messages postés 14 Date d'inscription mardi 5 avril 2016 Statut Membre Dernière intervention 20 décembre 2016 - 7 mai 2016 à 22:21
2 réponses
Utilisateur anonyme
5 mai 2016 à 07:29
5 mai 2016 à 07:29
Bonjour
c'est ta boucle while qui pose problème voila ce que tu as écrit en pseudo code
Essaye de faire ta boucle pour n = 2, sur un petit bout de papier
c'est ta boucle while qui pose problème voila ce que tu as écrit en pseudo code
i = 1
p=1
Demander n
Tant que i <n
(
p = p * i
i = i - 1
)
Essaye de faire ta boucle pour n = 2, sur un petit bout de papier
Utilisateur anonyme
7 mai 2016 à 21:56
7 mai 2016 à 21:56
En général, quand on calcule une factorielle, par exemple 5!, on fait:
1*2*3*4*5, donc avec des nombres croissants.
L'algorithme le plus efficace est souvent le plus simple (mais pas toujours).
Dans ton premier code il suffisait de changer i--, par i++.
Et si comme je te l'avais suggéré tu avais pris un papier et un crayon, et fait deux ou trois boucles, en notant chaque résultat, tu aurais vu tout de suite que tu partais vers les nombres négatifs.
De pplus Dalfab te l'a écrit noir sur blanc
Ton second code est fonctionnel, mais un peu plus alambiqué.
Par contre, je souligne l'effort d'avoir trouvé un algo différent de celui donné.
Et si prendre les nombres dans l'ordre décroissant était imposé alors c'est bon.
1*2*3*4*5, donc avec des nombres croissants.
L'algorithme le plus efficace est souvent le plus simple (mais pas toujours).
Dans ton premier code il suffisait de changer i--, par i++.
Et si comme je te l'avais suggéré tu avais pris un papier et un crayon, et fait deux ou trois boucles, en notant chaque résultat, tu aurais vu tout de suite que tu partais vers les nombres négatifs.
De pplus Dalfab te l'a écrit noir sur blanc
Ton second code est fonctionnel, mais un peu plus alambiqué.
Par contre, je souligne l'effort d'avoir trouvé un algo différent de celui donné.
Et si prendre les nombres dans l'ordre décroissant était imposé alors c'est bon.
maria3100
Messages postés
14
Date d'inscription
mardi 5 avril 2016
Statut
Membre
Dernière intervention
20 décembre 2016
7 mai 2016 à 22:21
7 mai 2016 à 22:21
j ai fais ça aussi voila #include<stdio.h>
#include<conio.h>
main ()
{ int p=1,i=1,n;
printf("donner un nombre pour n :");
scanf("%d",&n);
while(i<=n)
{ p=p*i;
i++;}
printf(" affiche le rsultat p %d",p);
getch();}
#include<conio.h>
main ()
{ int p=1,i=1,n;
printf("donner un nombre pour n :");
scanf("%d",&n);
while(i<=n)
{ p=p*i;
i++;}
printf(" affiche le rsultat p %d",p);
getch();}
6 mai 2016 à 01:15
6 mai 2016 à 06:40
En outre des codes de factorielles en C, il y en a en veux-tu en voilà sur le Net.
Le plus grave, ce n'est pas l'ignorance, mais de ne pas vouloir chercher..
6 mai 2016 à 17:25
Si tu ne vois pas quoi changer, on ne peut pas plus.
6 mai 2016 à 21:17
S'il n'est pas capable de se faire violence pour réfléchir un peu sur un algo aussi basique et une erreur aussi simple (je ne fais pas de C mais ça m'a sauté au visage en 2s), il ne progressera pas.
Le but du forum est d'abord d'aider à apprendre.
Y'a des cas alambiqué ou on donne la solution, mais sur un truc aussi simple il est préférable de faire réfléchir.
7 mai 2016 à 21:37
#include<stdio.h>
#include<conio.h>
int main()
{
int fact ,i,x;
printf("donner un nombre :");
scanf("%d",&x);
i=x-1;
fact=x;
while(i>1)
{fact=fact*i;
i--;}
printf("donner le resulta fact %d",fact);
getch();}