1

Dans mon programme qui convertit un décimal en une fraction,mais avec des grosses fractions cela m'affiche divide by zero mad
(cf avec y dans la source) #include <tigcclib.h> long denom,num; long gcd(long a, long b) {   if (b == 0)       return a;   else     return gcd(b, a % b); } void float_to_frac(float x) {      float i=0;      long pgcd;      while (x!=trunc(x) && i<15.)      {           x*=10;           i++;      }      x=floor(x);      num=x;      denom=pow(10.,i);      pgcd=gcd(num,denom);      num/=pgcd;      denom/=pgcd; } // Main Function void _main(void) {      float x,y;      x=3./8.;      y=57./93.;      float_to_frac(x);      printf("%f=%ld/%ld\n",x,num,denom);      ngetchx();      float_to_frac(y);      printf("%f=%ld/%ld\n",y,num,denom);      ngetchx(); }
pouriez vous m'aider svp
wartoom.free.fr mon site perso,le portail du divertissement

2

"divide by 0" veut dire "division par 0"
ce n'est pas _possible_ en mathématiques... ce n'est donc pas non ,plus possible en programmation cheeky
autrement dit, pour éviter d'avoir un divide by 0, il faut que tu vérifie, avant de diviser, que ton dénominateur ne vaut pas 0... et s'il vaut 0, tu ne fais pas pas la division smile
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

3

c'est pas ce qu'il veut dire je pense, il demande pkoi son programme fait une division par 0 happy

caamg>
je ne vois pas trop ce qui pourrait faire planter avec 3/8 et 57/93, mais en tout cas 10^15 est bcp trop gros pour rentrer dans un "long" : tu devrais t'arreter a 10^9...
sinon pour le pb de division par 0, la solution la plus simple serait d'afficher num, denom et pgcd comme ca tu vois ou ca foire smile

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

4

merci pollux ca marche love
maintenant j'ai compris cool
en fait comme le nombre à stocker dans denum était trop grand, il restait égal à 0 donc on a 1 pgcd nul donc
l'instruction"denom/=pgcd;" provoque une erreur
wartoom.free.fr mon site perso,le portail du divertissement