elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Optimizar un codigo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Optimizar un codigo  (Leído 972 veces)
arcanaer

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Optimizar un codigo
« en: 23 Noviembre 2016, 04:16 am »

Hola, buenas noches, tengo este codigo, que lo que hace es abrir un archivo .txt sacar todas las palabras, quitar puntuaciones y solo contar de separadores lo que es .,();
Ahora tomar cada palabra, ordenarla alfabeticamente, y checar cuantas veces aparece en el arreglo, despues añadir las veces que aparece esa palabra.
entonces por ejemplo si tenemos http://pagina.unam.mx/cyp
la primera palabra seria
 http://pagina    1
unam      1
mx/cpy    1

La primera es la palabra y la segunda las veces que aparece, pero cuando hablamos de mas de 100 000 palabras en el .txt el codigo se torna muy lento y se tarda aprox 5 min en arrojar resultados, alguien me podria ayudar a optimizarlo?

Código:
void Diccionario(char *szNombre, char szPalabras[][TAMTOKEN], int iEstadisticas[], int &iNumElementos)
{
//char szNombre[50];
//printf("Dame el nombre del archivo");
//scanf_s("%s", szNombre, 49);
FILE *libro;
fopen_s(&libro, szNombre, "r");
char palabra[TAMTOKEN];
char *palabra1;
char szPalabras1[NUMPALABRAS][TAMTOKEN];
int estad[NUMPALABRAS];
char *next = NULL;
int i, j, k, conta = 0;
int numpala;
int mayor[NUMPALABRAS];
char aux[100];
if (libro == NULL)
{
printf("No se pudo abrir el archivo");
}
else
{
i = 0;

while (!feof(libro))
{
fscanf_s(libro, "%s", palabra, 49);
_strlwr_s(palabra);
palabra1 = strtok_s(palabra, " ;,.)(", &next);
while (palabra1 != NULL)
{
//printf("%s\n", palabra1);
strcpy_s(szPalabras1[i], palabra1);
palabra1 = strtok_s(NULL, " ;,.)(", &next);
i++;
}
//strcpy_s(diccionario[i], palabra1);

//printf("%s\n", diccionario[i]);
//i++;

}
numpala = i;

// ORDENAR CADENAS
for (i = 0; i < numpala -1 ; i++)
{
k = i;
strcpy_s(aux, szPalabras1[i]);
for (j = i + 1; j < numpala; j++)
{
if (strcmp(szPalabras1[j], aux) < 0)
{
k = j;
strcpy_s(aux, szPalabras1[j]);
//permite hacer una copia auxiliar de la cadena szPalabras[j];
}
}
strcpy_s(szPalabras1[k], szPalabras1[i]);
strcpy_s(szPalabras1[i], aux);
}

for (i = 0; i < numpala; i++)
{
//printf("%s\n", diccionario[i]);

}

}
//ordenamos por estadisticas.
for (i = 0; i < numpala; i++)
{
estad[i] = 0;
for (j = 0; j < numpala; j++)
{
if (strcmp(szPalabras1[i], szPalabras1[j]) == 0)
{
estad[i]++;
}

}

}
i = 0;
while (i < numpala)
{
if (estad[i] != 1)
{
//printf("La palabra %s se repite %i veces\n", diccionario[i], esta[i]);
}
else
{
//printf("La palabra %s solo se encuentra una vez\n", diccionario[i]);
}

i = i + estad[i];
}
iNumElementos = 0;
for (i = 0; i < numpala; i++)
{
if (strcmp(szPalabras1[i], szPalabras1[i + 1]) != 0)
{
iNumElementos++;
}
}
//printf("%i\n", iNumElementos);

i = 0;

while (i < numpala)
{
mayor[i] = 0;
if (estad[i] != 1)
{
for (j = i; j < i + estad[i]; j++)
{

if (estad[j] >= mayor[i])
{
mayor[i] = estad[j];
}
else
{
mayor[i] = mayor[i];
}
}

}
else
{
mayor[i] = estad[i];

}
//imprimimos diccionario
//printf("%s %i\n", szPalabras[i], mayor[i]);
strcpy_s(szPalabras[conta], szPalabras1[i]);
iEstadisticas[conta] = mayor[i];
conta++;
i = i + estad[i];

}

fclose(libro);

}


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Optimizar Codigo
PHP
FFFenix 0 878 Último mensaje 9 Septiembre 2011, 03:18 am
por FFFenix
Optimizar código sobrecargado en c++
Programación C/C++
angoav98 1 1,496 Último mensaje 21 Febrero 2012, 14:50 pm
por Xandrete
¿Optimizar código?
ASM
paulagarcum 2 1,392 Último mensaje 4 Abril 2013, 13:46 pm
por paulagarcum
Ayuda a optimizar codigo
Programación Visual Basic
Tomas1982 0 2,577 Último mensaje 5 Octubre 2016, 18:02 pm
por Tomas1982
optimizar codigo foreach
.NET (C#, VB.NET, ASP)
aspiazu 6 1,769 Último mensaje 8 Abril 2017, 19:45 pm
por aspiazu
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines