Ir para conteúdo
Fórum Script Brasil

Lucas de Lima

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre Lucas de Lima

Lucas de Lima's Achievements

0

Reputação

  1. Sempre que executo, o processo não termina (ou eu que perdi a paciência cedo demais) e eu tenho de parar. Talvez alguém consiga ver algo errado no código. A ideia do exercício é: Pegar um texto, fazer uma lista das palavras desse texto (por isso o parser), e utilizar hashing para fazer um dicionário com uma instância de cada palavra. O código está logo abaixo. Desde já agradeço, Lucas. #include <stdio.h> #include <stdlib.h> #include <string.h> struct lista { lista* prox; char palavra[40]; }; struct hashtable{ char palavra[40]; }; // Structs usadas definidas unsigned int hashfunction(char *s) { unsigned int hashval; for (hashval = 0; *s != ''; s++){ hashval = *s + 31 * hashval; } return hashval % 5000; } // Métodos usados, não sei se hashfunction está certa. Peguei na internet. lista* parser(char* c){ lista *p = (lista*) malloc(sizeof(lista)); lista *q = p; char palavra[40]=""; int i = 0; int j = 0; while (c[i+1]!=''){ if(c[i] != ',' || c[i] != '.' || c[i] != ' ' || c[i] != '/'){ palavra[j]=c[i]; j++; } if( c[i] == ',' || c[i] == '.' || c[i] == ' ' || c[i] == '/'){ strcpy(palavra,q->palavra); q=q->prox; j=0; memset ((void *) &palavra, '', sizeof(palavra)); } i++; } return p; } // Parser implementado. hashtable* hashing(hashtable* tabela, lista* l){ lista* p = l; unsigned int valor; while(p->prox!=NULL){ valor = hashfunction(p->palavra); if(tabela[valor].palavra==NULL){ strcpy(p->palavra, tabela[valor].palavra); } p=p->prox; } return tabela; } // Processo de hashing implementado. int main() { char texto[50000]; hashtable tabela[5000]; printf("Digite o texto desejado: "); gets(texto); hashing(tabela,parser(texto)); for (int i=0;i < 5000;i++){ if(tabela[i].palavra!=''){ printf("%c", tabela[i].palavra); } } system("pause"); return 0; }
×
×
  • Criar Novo...