Jump to content
Fórum Script Brasil
  • 0

FUNCAO DE HASH SIMPLES


tarapi
 Share

Question

Boa noite .

Estou tentando implementar um codigo em c para implementar a funcao hash abaixo.

alguém pode me ajudar?

#include <stdio.h>

#include <string.h>

 

unsigned hash(char *s){

    unsigned hval = 0;

  

    while(*s != '\0'){

        hval = (hval << 4) + *s;

        s++;

    }

  

    return(hval);

}

int stringParaInt(char *string) {

    int tamanho, primeira, segunda; //Inteiros que representam o tamanho,

                                    //o código da primeira letra da string

                                    //e o código da segunda letra.

    tamanho =  strlen(string);      //Mede o tamanho da string

    primeira = string[0];           //Obtém o código da primeira letra

    segunda = string[1];            //Obtém o código da segunda letra

    int resultado = (tamanho * primeira) + segunda; //Função de transformação

    return resultado;  //Retorna número que representa a string

    }

 

 

void main() {

    int i;

    char dado[50];

 

    printf("\nDefina o tamanho da tabela: ");

    scanf("%d", &tamanhoTabela);

 

    for (i=0; i<tamanhoTabela; i++) {

  

    printf("\nDigite uma palavra qualquer: ");

    gets(dado);

 

    printf("A chave para a tabela (de 0 a %d) é: %d", tamanhoTabela-1, hash(stringParaInt(dado)));

    }

 

}

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

Não entendi qual o problema. Sem a especificação do que é necessário implementar, não dá para auxiliar na solução. Por exemplo, retirando a chamada à stringParaInt, o código deveria, ao menos, funcionar.

Outra coisa: ler da entrada padrão (stdin) utilizando a função gets não é muito seguro. Veja as seguintes referências, especialmente os exemplos da fgets:
http://www.cmaismais.com.br/referencia/cstdio/gets/
http://www.cmaismais.com.br/referencia/cstdio/fgets/

Abraços.

Edited by Durub
Link to comment
Share on other sites

  • 0

preciso fazer um código que implemente a seguinte função hash:

unsigned hash(char *s){

    unsigned hval = 0;

    while(*s != '\0'){

        hval = (hval << 4) + *s;

        s++;

    }

    return(hval);

}

implementei um código principal chamando a função hash.

mas não consigo botar para rodar

Obrigado

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...