Ir para conteúdo
Fórum Script Brasil
  • 0

FUNCAO DE HASH SIMPLES


tarapi

Pergunta

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 para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 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.

Editado por Durub
Link para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...