Don't like ads? PRO users don't see any ads ;-)
Guest

funcionando

By: a guest on May 2nd, 2012  |  syntax: C  |  size: 1.97 KB  |  hits: 19  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. # include "TAD.h"
  2. # define TAM 99999
  3.  
  4. typedef struct hash *Thash;
  5. struct hash{
  6.         int status; // 0 para nada e 1 para usado
  7.         int infracao; // contagem de infracoes
  8.         Tlista *dados;
  9. };
  10.  
  11. Thash cria_hash(){
  12.         int i;
  13.         Thash motora = (Thash)malloc(sizeof(struct hash)*TAM);
  14.         for(i = 0; i < TAM; i++){
  15.                 motora[i].dados = criar();
  16.                 motora[i].infracao = 0;
  17.                 motora[i].status = 0;
  18.         }
  19.         return motora;
  20. }
  21.  
  22. int espalhamento(int num, int i){
  23.         return ((num + i) % TAM);
  24. }
  25.  
  26. void insere_hash(Thash motora, int cnh, int multa, char *data){
  27.         int i=0, k;
  28.         k = espalhamento(cnh, i);
  29.         do{
  30.                 if(motora[k].status == 0){
  31.                         inserir(motora[k].dados,cnh,multa,data);
  32.                         motora[k].status = 1;
  33.                         return;
  34.                 }else if(busca(motora[k].dados, cnh) == 1){ // indicando se o cnh é igual
  35.                         inserir(motora[k].dados,cnh,multa,data);
  36.                         return;
  37.                 }else{
  38.                         i++;
  39.                 }
  40.         }while(i < TAM);
  41. }
  42.  
  43. int busca_hash(Thash motora, int cnh, int i){
  44.         int j;
  45.         if(i < TAM){
  46.                 j = espalhamento(cnh, i);      
  47.                 if(motora[j].status == 0){
  48.                         printf("nenhuma ocorrencia\n");
  49.                         return -1; // caso nao possua elemento algum
  50.                 }else if(busca(motora[j].dados, cnh) == 1){
  51.                                 printf("\n");
  52.                                 imprimir(motora[j].dados);
  53.                 }else{
  54.                                 return busca_hash(motora, cnh, i+1);
  55.                 }
  56.         }
  57.         return -1;
  58. }
  59.  
  60. int main(){    
  61.         long int i;
  62.         int a;
  63.         char b[10];
  64.         Thash motora = cria_hash();
  65.         FILE *arq1 = fopen("entrada.txt", "r");
  66.         if(arq1!=NULL){
  67.                 fscanf(arq1,"%d. %d %s", &i, &a, b);
  68.         }else{
  69.                 printf("erro: nenhuma entrada\n");
  70.         }
  71.        
  72.         /*printf("Insira: ");
  73.         scanf("%d", &i);
  74.         printf("Insira: ");
  75.         scanf("%d", &a);
  76.         printf("Insira: ");
  77.         scanf("%s", b);
  78.         */
  79.         insere_hash(motora,i,a,b);
  80.         insere_hash(motora, 15594413252, 2, "11/12/2011");
  81.         insere_hash(motora, 10, 34, "11/12/2011");
  82.         /*insere_hash(motora, 3, 90, );
  83.         insere_hash(motora, 3, 100, 2);
  84.         insere_hash(motora, 9, 23, 1);
  85.         insere_hash(motora, 1, 2, 6);
  86.         */busca_hash(motora, 10,0);
  87.         printf("\n");
  88.         //busca_hash(motora, 1,0);
  89.         fclose(arq1);
  90.         return 0;
  91.  
  92. }