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++){
}// 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: "); 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
return 0;
}
EDITO: Solucionado
por fin, el array tiene que estar lleno o la busqueda al menos llena