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;
}
Question
Lucas de Lima
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.
Edited by Lucas de LimaLink to comment
Share on other sites
0 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.