IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Dev c++ et 64 bits


Sujet :

C

  1. #21
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par dany9 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    index = (int)(hashcode % HASH_TAILLE)
    chercher l'erreur ... :-)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unsigned index = (unsigned)(hashcode % HASH_TAILLE)
    et l'affichage doit se faire avec "%u" et non "%d"...

  2. #22
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 19
    Par défaut
    euh .. désolé mais ça n'a pas l'air de fonctionner tel que tu propose emmanuel si j'ai ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    unsigned index = (unsigned)(hash_code%HASH_TAILLE);
      printf("index     : %u\n",index);
    où hashcode vaut 18446744072274528121 (ouf!)
    et HASH_TAILLE = 1000
    index devrait valoir 121
    (modulo avec 1000 revient à ne conserver que les 3 derniers chiffres
    du code , qu'on prend ensuite en index de tableau)

    or j'obtients : 4294966801 ???

    bizarre ...

  3. #23
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par dany9 Voir le message
    euh .. désolé mais ça n'a pas l'air de fonctionner tel que tu propose emmanuel si j'ai ce bout de code :
    <...>
    or j'obtiens : 4294966801 ???

    bizarre ...
    Ben montre ton code, parce que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include <stdio.h>
     
    int main (void)
    {
       unsigned __int64 hash_code = 18446744072274528121ULL;
       unsigned HASH_TAILLE = 1000;
       unsigned index = (unsigned) (hash_code % HASH_TAILLE);
       printf ("index     : %u\n", index);
     
       return 0;
    }
    donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    index     : 121
     
    Press ENTER to continue.
    avec MinGW32...

  4. #24
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 19
    Par défaut
    bonjour et merci pour ta demonstration emmanuel!
    Bon , je ne peux pas montrer tout le code .. c'est un jeu d'échecs alors ...
    Mais en fait je fais comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    typedef struct ull    __int64;
    #define HASH_TAILLE    1000  /*taille de la hash table*/
    #define MAX_COUPS  500       /*nbre max de coups d'une partie*/
     
    ull  hash_code[MAX_COUPS+1];  /*hash code pour chaque coup joué*/
     
    /*dans la fonction qui récupère l'index*/
    unsigned index = (unsigned) (hash_code[nb_coups] % HASH_TAILLE);
    printf("index : %u\n",index);
    Et ... je n'obtient pas 121 ... ? mais je viens de voir que tu as mis hash_taille en unsigned , moi c'est un define ... ? à cause de ça surement...

    merci quand même


    edit :

    bon grace a toi emmanuel j'ai trouvé une solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    typedef struct ull    __int64;
    #define HASH_TAILLE    1000  /*taille de la hash table*/
    #define MAX_COUPS  500       /*nbre max de coups d'une partie*/
     
    ull  hash_code[MAX_COUPS+1];  /*hash code pour chaque coup joué*/
     
    /*dans la fonction qui récupère l'index*/
    unsigned ull  hash = hash_code[nb_coups]; 
    unsigned index = (unsigned) (hash % HASH_TAILLE);
    printf("index : %u\n",index);
    et là j'obtient le fameux 121 , cool merci encore !!

    dois je mettre résolu ? ou atendre que tu lises manu ?

  5. #25
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par dany9 Voir le message
    bonjour et merci pour ta demonstration emmanuel!
    Bon , je ne peux pas montrer tout le code .. c'est un jeu d'échecs alors ...
    Mais en fait je fais comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    typedef struct ull    __int64;
    #define HASH_TAILLE    1000  /*taille de la hash table*/
    #define MAX_COUPS  500       /*nbre max de coups d'une partie*/
     
    ull  hash_code[MAX_COUPS+1];  /*hash code pour chaque coup joué*/
     
    /*dans la fonction qui récupère l'index*/
    unsigned index = (unsigned) (hash_code[nb_coups] % HASH_TAILLE);
    printf("index : %u\n",index);
    Et ... je n'obtient pas 121 ... ? mais je viens de voir que tu as mis hash_taille en unsigned , moi c'est un define ... ? à cause de ça surement...

    merci quand même


    edit :

    bon grace a toi emmanuel j'ai trouvé une solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    typedef struct ull    __int64;
    #define HASH_TAILLE    1000  /*taille de la hash table*/
    #define MAX_COUPS  500       /*nbre max de coups d'une partie*/
     
    ull  hash_code[MAX_COUPS+1];  /*hash code pour chaque coup joué*/
     
    /*dans la fonction qui récupère l'index*/
    unsigned ull  hash = hash_code[nb_coups]; 
    unsigned index = (unsigned) (hash % HASH_TAILLE);
    printf("index : %u\n",index);
    et là j'obtient le fameux 121 , cool merci encore !!

    dois je mettre résolu ? ou atendre que tu lises manu ?
    Attention, ta définition de ull est.. fantaisiste...

    Ca ne fonctionne pas chez moi. En fait, pour que le % fonctionne correctement, il faut que les 2 opérandes soient de type ull :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    #include <stdio.h>
     
    typedef __int64 ull;
    #define HASH_TAILLE    1000ull    /*taille de la hash table */
    #define MAX_COUPS  2            /*nbre max de coups d'une partie */
     
    int main (void)
    {
       ull hash_code[MAX_COUPS + 1]; /*hash code pour chaque coup joué */
       int nb_coups = 1;
     
       hash_code[nb_coups] = 18446744072274528121ULL;
     
    /*dans la fonction qui récupère l'index*/
       {
          ull hash = hash_code[nb_coups];
          printf (" hash : %I64u\n", hash);
          printf (" hash MOD HASH_TAILLE: %I64u\n", hash % HASH_TAILLE);
          {
             unsigned index = (unsigned) (hash % HASH_TAILLE);
             printf ("index : %u\n", index);
          }
       }
     
       return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     hash : 18446744072274528121
     hash MOD HASH_TAILLE: 121
    index : 121
     
    Press ENTER to continue.
    Maintenant, c'est OK.

  6. #26
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Sous visual 2008 pas de problème avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <stdio.h>
    #include <limits.h>
     
    int main (void)
    {
       unsigned long long var1 = ULLONG_MAX;
       unsigned __int64 var2 = ULLONG_MAX;
       __int64 var3 = LLONG_MAX;
       printf ("%llu %llu %lld\n", var1, var2, var3);
       return 0;
    }
    mais je ne sais pas si sous mingw ça passe : à voir.

  7. #27
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 19
    Par défaut
    bonsoir!

    oui ... c'est sur emmanuel tu as raison : loufoque la definition de ull ...

    je devais avoir bien la tête ailleurs
    sinon c'est sur , bien expliqué c'est plus facile ! ton code marche et j'ai capté maintenant , merci à tous!

    a bientot

    dany

Discussions similaires

  1. Dev en 64 bits
    Par capitainepower dans le forum Débuter
    Réponses: 4
    Dernier message: 16/10/2013, 21h47
  2. Dev-C++ sur PC 64 bits
    Par Baillot Philippe dans le forum Dev-C++
    Réponses: 1
    Dernier message: 27/10/2007, 10h00
  3. Dev-C++ sur PC 64 bits
    Par Baillot Philippe dans le forum Dev-C++
    Réponses: 0
    Dernier message: 20/10/2007, 23h51
  4. Dev 64 bits et dual-core
    Par doudoustephane dans le forum C#
    Réponses: 4
    Dernier message: 02/03/2007, 09h35
  5. Lire 1 bit d'un fichier en C
    Par Anonymous dans le forum C
    Réponses: 3
    Dernier message: 23/05/2002, 19h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo