A ver si me podeis echar una mano porque me stoy volviendo loco con esto xD, es respecto a una busqueda binaria pero con palabras. Os dejo el codigo a ver si veis algo, o algun consejo de como hacerlo. Thanks
#include <stdio.h>
#include <string.h>
int main()
{
char palabra[20][20];
char busqueda[20]="";
char palabra_aux[20];
int i, k, h, primero=0, ultimo=19, centro=10;
for(i=0;i<20;i++){
strcpy(palabra[i],"");
}// limpia el array
for(i=0;i<5;i++){
printf ("Introduce una palabra:");
scanf ("%s", &palabra[i]);
}// coge 5 palabras por teclado
for(k=19;k>=0;k--)
{
for(h=0;h<k;h++)
{
if((strcmp(palabra[h],palabra[h+1])>0) && (strcmp(palabra[h+1],"")!=0))
{
strcpy(palabra_aux,palabra[h]);
strcpy(palabra[h],palabra[h+1]);
strcpy(palabra[h+1],palabra_aux);
}
}
}//ordena la lista
i=0;
while(i<5)
{
printf ("Introduce una palabra para ver si se encuentra en la lista: ");
scanf ("%s", &busqueda);
primero=0;ultimo=19;
while ((primero<=ultimo) && (strcmp(busqueda,palabra[centro])!=0))
{
centro=(primero+ultimo)/2;
if (strcmp(busqueda,palabra[centro])<0){primero=centro+1;}
if (strcmp(busqueda,palabra[centro])>0){ultimo=centro-1;}
printf("centro vale %d\n", centro);
}// busca en la lista
if (strcmp(busqueda,palabra[centro])==0) {printf ("La palabra se encuentra en la lista :)\n");}
else {printf ("La palabra no se encuentra en la lista :(\n");}
i++;
}// lo busca en 5 ocasiones
getchar();
return 0;
}
EDITO: Solucionado :) por fin, el array tiene que estar lleno o la busqueda al menos llena