salut à tous
pour un probléme de complexité, j'aimerais remplaçer un alogorithme itératif simple de comparaison de chaine de caracteres par l'alogorithme
d'ukkonen. voici mon code actuel:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TAILLE 1024
#define SIZE_WORD 25
int main(int argc, char ** argv)
{
int i = 0;
int j = 0;
char *index[TAILLE];
int nombre[TAILLE];
FILE *fic = NULL;
fic = fopen("fichier.txt", "r");
if(fic == NULL) {
printf("Erreur ouverture fichier ! \n");
return EXIT_FAILURE;
}
/* initialisation du tableau d'entier */
for(i = 0; i < TAILLE; i++) {
nombre[i] = 0;
}
for(i = 0; i < TAILLE; i++) {
index[i] = malloc(SIZE_WORD);
if(index[i] == NULL) {
printf("Erreur malloc ! \n");
return EXIT_FAILURE;
}
index[i] = '\0';
}
for(i = 0; i < TAILLE && fgets(index[i], SIZE_WORD, fic); i++) {
if((index[i])[strlen(index[i])-1] == '\n') /* a remplacer par une methode plus sur */
(index[i])[strlen(index[i])-1] = 0;
}
for(i = 1; i < argc; i++) {
for(j = 0; j < 1024; j++) {
if(!strcmp(argv[i],index[j]))
nombre[j]++;
}
}
/* exploitation des resultats */
for(j = 0; j < 1024; j++) {
if(nombre[j]) {
printf("Mot: %s apparu %d fois\n",index[j],nombre[j]);
}
}
for(i = 0; i < TAILLE; i++) {
free(index[i]);
index[i] = NULL;
}
fclose(fic);
fic = NULL;
return EXIT_SUCCESS;
}
--------------------
si quelq'un a une petite idée de l'algo d'ukkonen, merci d'avance ^^