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 :

Fonction de Hachage


Sujet :

C

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Fonction de Hachage
    Hello

    voila je bosse sur la focntion de hachage et jaurais voulu savoir comment realiser une fonction de hachage pour le resultat suivant :

    [2^0x(valeur ASCII de la lettre)+...+2^nx(valeur ASCII de lettre)]mod m

    m la taille de mon tableau

    exemple avec le mot : OK avec m=6

    je voudrais avoir

    [2^0x(valeur ACSII de 0)+2^1x(valeur ACSII de K)]mod 6=

    Mille de merci de votre aide

  2. #2
    Membre averti

    Inscrit en
    Juin 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 97
    Points : 307
    Points
    307
    Par défaut
    ^
    nx
    Quoi qu'est-ce ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    desole c vrai ke c pas tres clair

    2^nx(valeur ASCII de lettre)

    je voulai dire par la 2 exposant n multiplie par la valeur ASCII de la lettre, n etant egale au nombre de lettre du mot moins 1 puisque au commence a 2 exposant 0.

    Merci

  4. #4
    Ol'
    Ol' est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 56
    Points : 69
    Points
    69
    Par défaut
    Je ne vois pas bien où est ton problème. toutefois, sache que pour effectuer une multiplication par 2^n, tu peux faire un décalage vers la gauche de n bits sur ton nombre.

    Pour ce qui est du modulo

    a mod b est le reste de la division euclidienne de a par b.
    Cela doit te donner quelquechose du style
    a mod b = a - ((long)(a)/(long)(b)*b)

    Au erreurs de calcul près...

    Ol'

  5. #5
    Membre régulier

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 65
    Points : 105
    Points
    105
    Par défaut
    Bonjour,

    un modulo se fait avec %.

    Ceci me semble être ce que tu veux:

    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
     
    #include <stdio.h>
    #include <string.h>
     
    unsigned my_hach( const char* pstr, unsigned m)
    {
    	unsigned l_i, l_r;
     
    	if( !pstr)
    		return 0;
     
    	for( l_i=0, l_r=0; l_i < strlen(pstr); l_r += (1<<l_i)*pstr[l_i++]);
     
    	return l_r % m;
    };
     
    int main()
    {
    	printf("%u\n", my_hach( "OK", 6) );
    	return 0;
    };
    en cas de pstr nul, il faudra peut être convenir d'une autre valeur de retour que 0 ...

    golem
    +++

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci golem

    c'est bien le fonction de hachage que je cherche, je vais pouvoir commencer a constituer mon dictionnaire


  7. #7
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 47
    Points : 52
    Points
    52
    Par défaut
    a quoi ca sert une fonction fonction de hachage?

  8. #8
    Membre actif
    Avatar de Choupi
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 223
    Points : 235
    Points
    235
    Par défaut
    On cherche a associer à un element d'un ensemble un entier qui le caracterise. pour cela on utilise une fonction de hachage comme vu ci dessus.
    Une bonne fonction de hachage fait en sorte que le nombre d'elements associés à chaque entier soit constant.

    C'est pratique pour une recherche car dans ce cas son cout est de 1 ...

    http://fastnet.univ-brest.fr/~gire/C..._C/node13.html

    A voir le robleme des collisions...

    Freif'

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appliquer la fonction de hachage MD5 à un texte
    Par 9tita dans le forum Sécurité
    Réponses: 2
    Dernier message: 01/05/2011, 16h13
  2. Recherche d'une fonction de hachage
    Par druzy dans le forum Langage
    Réponses: 13
    Dernier message: 26/11/2007, 21h09
  3. Probleme Fonction de Hachage
    Par 1pedro1 dans le forum C
    Réponses: 6
    Dernier message: 25/11/2007, 17h43
  4. [Oracle / Fonction hachage] Fonction de hachage SHA / MD5
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 8
    Dernier message: 26/01/2006, 08h58
  5. Fonction de hachage
    Par killer crok dans le forum C
    Réponses: 12
    Dernier message: 02/10/2002, 09h48

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