probleme de variable .... [C] - C++ - Programmation
Marsh Posté le 15-10-2002 à 23:06:01
c'est a cause d'un dépassement de capacite.
le mieux que tu puisses faire c'est déclarer tes variables comme float/double, c'est une représentation des nombres réels assez imprécise, mais elle te permettra de passer outre cette limitations sur les types entiers.
float f;
scanf("%f", &f);
edit:
et le while(1==1) tu peux tout simplement mettre while(1), ca economise un test!
Marsh Posté le 17-10-2002 à 17:24:55
Sinon pour augmenter un peu, tu peux utiliser le type __int64 sous Windows pour repousser un peu la limitation si la précision est importante pour toi (et je le pense, si tu veux calculer un factoriel c'est pour avoir sa valeur précise!).
Après, le seul moyen et d'utiliser des libraries qui gèrent des nombres de taille infinie comme http://www.swox.com/gmp/, ou la Miracl librairie. Avec des libraries comme ça, tu calcules le factoriel de 1000 sans problème (faut juste de la place pour afficher la chaine de caractère qui représente le nombre! )
Marsh Posté le 17-10-2002 à 17:37:59
Taz@PPC a écrit a écrit : cela dit si tu veux calculer la factorielle d'un grand nombre, le mieux c'est d'utilsier la formule de Stirling |
Marsh Posté le 17-10-2002 à 17:53:38
Taz@PPC a écrit a écrit : edit: et le while(1==1) tu peux tout simplement mettre while(1), ca economise un test! |
On ne met jamais while(1) pour une boucle infinie, mais
Code :
|
L'existance du '1' n'est pas justifiée.
Marsh Posté le 17-10-2002 à 19:44:11
Ben si !
Code :
|
Marsh Posté le 17-10-2002 à 20:15:44
dites , moi je commence un peu le C et j'ai pas compris a quoi sert le "%d" lorsqu'on fait un scanf par exemple ....
Marsh Posté le 17-10-2002 à 20:17:04
Tssstare a écrit a écrit : dites , moi je commence un peu le C et j'ai pas compris a quoi sert le "%d" lorsqu'on fait un scanf par exemple .... |
achetes un livre s'il te plait. comme le K&R 2eme edition isbn 2-10-005116-4
Marsh Posté le 18-10-2002 à 04:58:26
Taz@PPC a écrit a écrit : qui comme chacun sait n'est pas du C |
Si... du C99
Marsh Posté le 15-10-2002 à 22:48:43
bon voila mon code :
#include <stdio.h>
#include <conio.h>
void main (void)
{
int n,factor;
long valeur;
clrscr();
while(1==1)
{
n=0;
valeur=0;
factor=0;
printf("Saisissez le nombre dont on veut calculer la factorielle : " );
scanf("%d",&n);
valeur=n;
factor=n;
if(n<0)
printf("\nOn ne peut calculer la factorielle d'un chiffre negatif !\n" );
else if(n==0)
printf("\nLa factorielle de 0 est : 0\n" );
else if(n==1)
printf("\nLa factorielle de 1 est : 1\n" );
else
{
do
{
n--;
valeur=valeur*n;
}
while(n>=2);
printf ("\nLa factorielle de %d est : %ld\n",factor,valeur);
}
}
}
le but du prog est de calculer la factorielle d'un chiffre donné...
mais arrivé à 13, le resultat n'est pas bon ...
faut que je mette quoi comme type pour ma var valeur ???
help, je debute en C
---------------
powered by 1700+ JIUHB 0251 F @ 2450 / 1.74v :ange: et rock stable !!!! :sol: