Busqueda binaria con palabras

Iniciado por soez, 3 Agosto 2010, 04:10 AM

0 Miembros y 1 Visitante están viendo este tema.

soez

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
01001010 01100001 01110110 01101001 01100101 01110010