Casamento Padrão C (Knuth, KMP e Rabinkarp)
327 palavras
2 páginas
/* Following program is a C implementation of the Rabin Karp Algorithm given in the CLRS book http://www.geeksforgeeks.org/archives/11937 http://www.daniweb.com/software-development/c/threads/83793 *//*O programa deve ter os seguintes itens:
• Uma opção para que o usuário escolha um arquivo contento o texto e depois possa executar várias consultas sobre este texto usando padrões diferentes. Em cada consulta, o usuário pode escolher o algoritmo de casamento de padrão que ele quer usar.
• Na resposta a uma consulta, o programa deve imprimir todo o texto e destacar cada ocorrência do padrão usando uma cor diferente daquela usada no restante do texto. No final, deve ser impressa a quantidade de ocorrências do padrão no texto.
• O programa deve ter também uma opção para realização de experimentos com marcação de tempo. Neste caso, faça como no item anterior, mas ao invés de imprimir o texto, imprima somente a quantidade de ocorrências e o tempo gasto pelo algoritmo para encontrá-las, somando-se o tempo de pré- processamento do padrão e o tempo de busca.*/
#include
#include
#include
#include
#include
#include
#include
#include
#define di 256
#define tamanho_texto 10000
//strcuts de tempo struct rusage resources; struct rusage ru; struct timeval tim; struct timeval tv;
//ler o arquivo
FILE *iniciaArquivo(FILE *arquivo, char *nome){ //passagem do arquivo como parametro if((arquivo = fopen(nome, "r"))== NULL){//caso não sucesso printf("Você errou o nome do arquivo,ou nao tem permissão de acesso a ele...\n"); return NULL; }
return arquivo;
}
//conta o tamanho do texto por letras, para poder fazer o vetor que irá aloca-lo int contaLetras(FILE *arquivo){
long i=0; char c; while((c = fgetc(arquivo)) != EOF){ i++; } return i+1;
}
//transfere o texto para um vetor de char char *leArquivo(FILE *arquivo, long tamanho){ char *texto,letra; int i = 0;
texto = (char*) malloc(tamanho+1