problème avec fmod

problème avec fmod - C - Programmation

Marsh Posté le 01-08-2004 à 12:43:50    

Bon voila j'essaie de faire une fonction qui calcule le pgcd avec des doubles (pas de problème avec des int)
 
Mon code est le suivant :  

Code :
  1. double pgcd(double a, double b)
  2. {
  3.         double c;
  4.         while (b != 0) {
  5.                 c = fmod(a, b);
  6.                 a = b;
  7.                 b = c;
  8.         }
  9.         return a;
  10. }


 
 
Donc j'utilise fmod à la place de % mais ca me sort des trucs bizzares ( en gros fmod me sort des décimaux qui tendent vers 0
 
Est-ce que je dois utiliser autre chose que fmod ?

Reply

Marsh Posté le 01-08-2004 à 12:43:50   

Reply

Marsh Posté le 01-08-2004 à 12:51:18    

le pgdc c'est pour les entiers et il semble que tu n'entende rien à l'arithmétique flottante. donc continue avec /,% ou div

Reply

Marsh Posté le 01-08-2004 à 12:57:12    

Le problème est que % ne marche pas avec des double

Reply

Marsh Posté le 01-08-2004 à 12:58:58    

le problème est que le pgdc n'a de sens qu'avec des entiers, le modulo aussi d'ailleurs

Reply

Marsh Posté le 01-08-2004 à 13:02:36    

Je sais bien mais moi j'aimerai bien utiliser des grands nombres

Reply

Marsh Posté le 01-08-2004 à 13:04:49    

qui ne sont pas des double
 
google GNU GMP


Message édité par Taz le 01-08-2004 à 13:09:40
Reply

Marsh Posté le 01-08-2004 à 13:10:59    

pas besoin d'éditer pour rajouter GNU, j'ai trouvé et puis le G de GMP c'est GNU
Ok merci pour l'info je lis la doc

Reply

Marsh Posté le 05-08-2004 à 07:31:40    

Puis si ça se trouve les long long ca te suffit (64 bits sur la plupart des archis).

Reply

Marsh Posté le 05-08-2004 à 07:55:42    

tu crois que ça existe une archi ou long long ne fait pas 64 bits ? ou au moins 64bits ?

Reply

Marsh Posté le 05-08-2004 à 11:02:47    

Taz a écrit :

tu crois que ça existe une archi ou long long ne fait pas 64 bits ? ou au moins 64bits ?

Désolé pour le pourrissage du topic (promis après j'arrête).
Comment afficher des entiers codés sur 64 bits mais signés ?
J'arrive à afficher des entiers 64 bits non signés en utilisant %llu.

Code :
  1. #include <stdio.h>
  2. int main(int nb_parametres, char** parametres)
  3. {
  4. long long  entier=1;
  5. int        i=0;
  6. for (i=0;i<64;i++)
  7.   {
  8.    fprintf(stdout, "%2d %20llu\n", i, entier);
  9.    entier=entier*2;
  10.   }
  11. /* Fin */
  12. return 0;
  13. }


Message édité par darkoli le 05-08-2004 à 13:01:01
Reply

Marsh Posté le 05-08-2004 à 11:02:47   

Reply

Marsh Posté le 05-08-2004 à 13:47:27    

%lld tout simplement.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed