Hola, que tal! Trato de hacer un programa dividido por funciones, tengo un diccionario con la frecuencia en la que aparecen las palabras, y en otro arreglo tengo otras cuantas palabras, necesito checar si las palabras del arreglo szPalabrasSugeridas aparecen en el arreglo szPalabras, si aparece agregar esa palabra y su estadistica a szListaFinal, lo intento hacer por busqueda binaria por que seran mas de 50 000 palabras las que se comparen, pero al momento de compilar el programa se queda parpadeando y no me marca ningun error, alguna sugerencia? Les dejo mi codigo.
Codigo que imprime las palabras
Código:
//Con esa lista de palabras y el diccionario, recupera las sugerencias
ListaCandidatas(szPalabrasSugeridas, iNumSugeridas, szPalabras, iEstadisticas, iNumElementos,
szListaFinal, iPeso, iNumLista);
//Mostrar las opciones candidatas, por orden de peso(frecuencia)
printf("Las candidatas son \n");
for (int j = 0; j < iNumLista; j++)
printf("%s %i\n", szListaFinal[j], iPeso[j]);
Codigo de la funcion que genera las palabras y las compara
Código:
void ListaCandidatas(
char szPalabrasSugeridas[][TAMTOKEN],
int iNumSugeridas,
char szPalabras[][TAMTOKEN],
int iEstadisticas[],
int iNumElementos,
char szListaFinal[][TAMTOKEN],
int iPeso[],
int & iNumLista)
{
int inf, sup, mitad,i;
iNumLista = 0;
for (i = 0; i < iNumSugeridas; i++)
{
inf = 0;
sup = iNumElementos;
char bandera = 'F';
while (inf <= sup)
{
mitad = (inf + sup) / 2;
if (strcmp(szPalabras[mitad], szPalabrasSugeridas[i]) == 0)
{
strcpy_s(szListaFinal[i], szPalabras[mitad]);
iPeso[i] = iEstadisticas[mitad];
iNumLista++;
bandera = 'V';
break;
}
if (strcmp(szPalabras[mitad], szPalabrasSugeridas[i]) > 0)
{
sup = mitad;
mitad = (inf + sup) / 2;
}
if (strcmp(szPalabras[mitad], szPalabrasSugeridas[i]) < 0)
{
inf = mitad;
mitad = (inf + sup) / 2;
}
}
}
}