-
Posts
2 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
posts postados por Johny Macedo
-
-
Boa tarde galera
Não estou entendendo o porque está ocorrendo isso. Estou fazendo um trabalho sobre tabelas hash, e sempre quando chamo a função de busca(busca_hash), o programa retorna -2 que seria quando a tabela está cheia. Se estiver alguma coisa errada no código eu não consigo visualizar isso. Alguém pode me ajudar? Agradeço.
#include <stdlib.h>
#include <stdio.h>
#include <time.h>#define TAM 15
int opc;
void menu(){
printf("\t******************** TABELAS HASH ********************\n\n");
printf("(1)Inserir novo elemento\n(2)Buscar um elemento\n(3)Visualizar elementos\n\n");
printf("Digite uma opcao: ");
scanf("%d",&opc);
//system("cls");
}int hash(int x)
{
return x % 15;
}
int insere(int *a, int x, int n){
int i, cont = 0;i = hash(x);
while(a != -1){
if (a == x){ // POSIÇÃO OCUPADA.
return -1;
}if (++cont == n){
return -2;
}if (++i == n){
i = 0;
}
}
a = x;
return i;
}
int busca_hash(int *a, int x, int n){
int i, cont = 0, compare=0;i = hash(x);
while(a != x){
compare++;if(a == -1)
return -1;if(++cont == n) // TABELA CHEIA...
return -2;if(++i == n)
i = 0;
}printf("\nNumero de comparacoes realizadas = %d\n", compare);
return i;
}
int main()
{
int vet[TAM], num, tam_tabela = TAM, numero,i,x=0;
char cont;do{
menu();
switch(opc)
{
case 1:
printf("\nDigite um numero a ser inserido: ");
scanf("%d", &num);
insere(vet,num,tam_tabela);
x++;
break;
case 2:
printf("\nQual numero deseja buscar? ");
scanf("%d", &numero);
printf("\nNumero encontrado na posicao: %d\n", busca_hash(vet,numero,tam_tabela));
break;
case 3:
printf("\n");
for (i=0; i<x; i++){
printf("%d ",vet);
}
printf("\n");
break;
}printf("\nDeseja continuar?(s)sim (n)nao: ");
scanf(" %c",&cont);
printf("\n\n");
cont = toupper(cont);
//system("cls");}while(cont == 'S');
system("pause");
return 0;
}
Sobre o Clube do Hardware
No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais
Direitos autorais
Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais
Solução - trabalho sobre tabelas hash
em C/C#/C++
Postado
@TYSQUARE89 Tentei e nada!, estou fazendo umas pesquisas aqui. No entanto, muito obrigado!