SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: ElNapster en Viernes 17 de Junio de 2005, 23:06
-
Hola a todos solo quisiera saber como se hace una busqueda dentro de una estructura que se va a un archivo . sera que podran dar un ejemplito , gracias
;)
-
No entiendo tu pregunta ¿quieres buscar una estructura en un archivo? por ejemplo, que tuviera en un archivo guardada la información de varios registros con cierta información y encontrar alguno de ellos ¿te refieres a eso?
-
Si amigo a eso me refiero, perdon si no me pude expresar :)
-
En este mismo foro puse un ejemplo sencillo de un programa en C para dar de alta, baja y modificar registros en un archivo. En él puedes ver que al dar de alta o modificar busco secuencialmente en el archivo el registro. Espero te sirva el ejemplo. Esta es la liga
http://foros.solocodigo.com/index.php?showtopic=15531 (http://foros.solocodigo.com/index.php?showtopic=15531)
-
Buenos días elnapster, en lo personal te recomiendo que utilices funciones hash para guardar cierto registro en cierta dirección, así se te facilitará mucho la búsqueda... mira por ejemplo:
Si tenemos la clave 245643 y el tamaño máximo de registros es 997, entonces si aplicamos la función hash modular:
245643 mod 997= 381
381 es la dirección física en la que debe estar el registro con la clave 245643, así que ahí lo escribes
Cuándo vayas a búscar el registro con la clave 245643 aplicas nuevamente la función hash modular:
245643 mod 997= 381 y así te llevará directamente al registro buscado
Claro que habrá algunos casos en los que una clave te dé la misma dirección que otra u otras, para eso tenemos la RESOLUCIÓN DE COLISIONES, la más simple se llama PRUEBA LINEAL que consiste en que si una clave te dá la misma dirección de otra, ponerla directamente enseguída de la dirección que le tocaba.
Las funciones hash más básicas son:
-Aritmética modular
-Plegamiento
-Mitad al cuadrado o del cuadrado
y los métodos para resolución de colisiones más básicas son:
-Prueba lineal
-Prueba cuadrática
-Doble direccionamiento
-Por encadenamiento
Búsca más información en libros y en internet, seguro que encontrarás algo, también te mando algunos laboratorios que había hecho para búsqueda por bloques, por índices y por algunas funciones hash.
-
Gracias amigos, esto me ha servido de mucho se los agradezcos,
:D