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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


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

Desconectado Desconectado

Mensajes: 49



Ver Perfil
busqueda binaria
« en: 6 Mayo 2010, 00:29 am »

wenas

miren tengo el siguiente problema necesito recibir por teclado una palabra y buscarla con busqueda binaria lo que necesito es la funcion.

Lo que apararece aca es una busqueda binaria para buscar numeros(no se que tan parecido sera con palabras)
Se que para este metodo es necesario tener todas las palabras ordenadas en mi caso lo hice por quicksort.
ayuda plz
 

int Debug;
int busbin (int valor [ ], int ini, int fin, int busca)
{ int med = (ini + fin) / 2;
if (Debug)
{ cout << "ini: " << ini << " fin: " << fin << endl;
getchar ( );
}
if (valor [med] == busca)
return (med);
else if (ini == fin)
return (-1);
else if (valor [med] > busca)
return (busbin (valor, ini, med - 1, busca));
else
return (busbin (valor, med + 1, fin, busca));
}





En línea

*How do you prove that you exist ?...maybe we don't exist...

*You don't need a reason to help people...
Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: busqueda binaria
« Respuesta #1 en: 6 Mayo 2010, 00:42 am »

Podrías valerte de la búsqueda binaria numérica, pero en comparaciones de mayor o menor, puedes usar strcmp, de la biblioteca string.h

info de strcmp

int strcmp (const char * s1, const char * s2);

Valor de retorno:
La función retorna un número entero mayor, igual, o menor que cero, apropiadamente según la cadena apuntada por str1 es mayor, igual, o menor que la cadena apuntada por str2. La comparación es según el orden lexicográfico de las cadenas str1 y str2.

como en la tabla ASCII las letras están ordenadas de la misma forma que en el abecedario (misma secuencia de orden) básate en el valor de retorno de strcmp para saber si tienes que buscar en la mitad inferior o superior del vector de palabras, o bien, si la has encontrado.


En línea

Sunshine66

Desconectado Desconectado

Mensajes: 49



Ver Perfil
Re: busqueda binaria
« Respuesta #2 en: 6 Mayo 2010, 01:13 am »

haber si entendi la idea seria una cosa asi,
estoy ocupando tolow para poder convertir toda las palabras en minisculas y no haya problema.

int Debug;
int busbin (char pal [ ], int ini, int fin, int busca)
{ int med = (ini + fin) / 2;
if (Debug)
{ cout << "ini: " << ini << " fin: " << fin << endl;
getchar ( );
}
if (strcmp(toLow(pal[med]), toLow(pal[busca]))
return (med);
else if (strcmp(toLow(pal[ini], toLow(pal[fin])
return (-1);
else if (strcmp(toLow(pal[med] > toLow(pal[busca]) // no se como seria ahi  :huh:
return (busbin (pal, ini, med - 1, busca));
else
return (busbin (pal, med + 1, fin, busca));
}
else
return (busbin (pal, med + 1, fin, busca));
}
En línea

*How do you prove that you exist ?...maybe we don't exist...

*You don't need a reason to help people...
Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: busqueda binaria
« Respuesta #3 en: 6 Mayo 2010, 07:42 am »

Veamos... en ese caso, lo que tienes que comparar es el resultado de la llamada a strcmp, una vez ya devuelto el valor, no dentro de su propia llamada.

por ponerte un ejemplo, luego tu ya pones acorde a tus necesidades

if (strcmp(cadena1, cadena2) >0)
este if se cumplira siempre y cuando la cadena 2 sea alfabéticamente posterior a la primera.

por otro lado, cuando quieres comprobar si ambas cadenas son iguales la comprobación es strcmp(cadena1, cadena2)==0 . Puesto que cuando son iguales, retorna un 0. si cadena 1 es mayor, un numero negativo, y si cadena 2 es mayor, uno positivo.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Busqueda binaria.
Java
NetJava 6 9,303 Último mensaje 28 Marzo 2011, 18:20 pm
por NetJava
Busqueda binaria de un array desordenado « 1 2 3 »
Programación C/C++
David_RM 21 17,273 Último mensaje 13 Noviembre 2011, 16:55 pm
por CobraCY
[C] Búsqueda binaria recursiva
Programación C/C++
BatchianoISpyxolo 3 19,453 Último mensaje 29 Octubre 2012, 23:08 pm
por flony
busqueda binaria en archivo
Programación C/C++
m@o_614 5 5,821 Último mensaje 2 Enero 2014, 00:34 am
por m@o_614
Me pueden ayudar a hacer una Búsqueda Binaria Recursiva Dinamica
Programación C/C++
gibranini 4 3,963 Último mensaje 8 Julio 2014, 19:20 pm
por gibranini
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines