# include "TAD.h"
# define TAM 99999
typedef struct hash *Thash;
struct hash{
int status; // 0 para nada e 1 para usado
int infracao; // contagem de infracoes
Tlista *dados;
};
Thash cria_hash(){
int i;
Thash motora = (Thash)malloc(sizeof(struct hash)*TAM);
for(i = 0; i < TAM; i++){
motora[i].dados = criar();
motora[i].infracao = 0;
motora[i].status = 0;
}
return motora;
}
int espalhamento(int num, int i){
return ((num + i) % TAM);
}
void insere_hash(Thash motora, int cnh, int multa, char *data){
int i=0, k;
k = espalhamento(cnh, i);
do{
if(motora[k].status == 0){
inserir(motora[k].dados,cnh,multa,data);
motora[k].status = 1;
return;
}else if(busca(motora[k].dados, cnh) == 1){ // indicando se o cnh é igual
inserir(motora[k].dados,cnh,multa,data);
return;
}else{
i++;
}
}while(i < TAM);
}
int busca_hash(Thash motora, int cnh, int i){
int j;
if(i < TAM){
j = espalhamento(cnh, i);
if(motora[j].status == 0){
printf("nenhuma ocorrencia\n");
return -1; // caso nao possua elemento algum
}else if(busca(motora[j].dados, cnh) == 1){
printf("\n");
imprimir(motora[j].dados);
}else{
return busca_hash(motora, cnh, i+1);
}
}
return -1;
}
int main(){
long int i;
int a;
char b[10];
Thash motora = cria_hash();
FILE *arq1 = fopen("entrada.txt", "r");
if(arq1!=NULL){
fscanf(arq1,"%d. %d %s", &i, &a, b);
}else{
printf("erro: nenhuma entrada\n");
}
/*printf("Insira: ");
scanf("%d", &i);
printf("Insira: ");
scanf("%d", &a);
printf("Insira: ");
scanf("%s", b);
*/
insere_hash(motora,i,a,b);
insere_hash(motora, 15594413252, 2, "11/12/2011");
insere_hash(motora, 10, 34, "11/12/2011");
/*insere_hash(motora, 3, 90, );
insere_hash(motora, 3, 100, 2);
insere_hash(motora, 9, 23, 1);
insere_hash(motora, 1, 2, 6);
*/busca_hash(motora, 10,0);
printf("\n");
//busca_hash(motora, 1,0);
fclose(arq1);
return 0;
}