Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: m@o_614 en 31 Diciembre 2013, 22:54 pm



Título: busqueda binaria en archivo
Publicado por: m@o_614 en 31 Diciembre 2013, 22:54 pm
Saludos

tengo la siguiente tabla de instrucciones(de un ensamblador) capturada en un archivo txt:

codop
ABA     NO   INH   1806     2   0   2
ABX     NO   IDX   1AE5     2   0   2
ABY     NO   IDX   19ED  2   0   2
ADC     SI   IMM   89ii     1   1   2
..
..
..

y tengo por ejemplo un codigo de operacion que dice ABY, el cual lo tengo que buscar en este archivo, para ello pense que seria mas rapido si lo hago con una busqueda binaria, pero me queda la duda de si tengo primero que guardar solamente los codigos de operacion(ABA,ADB...) en una estructura de datos para despues poder hacer la busqueda, o si tengo que recorrer el archivo completo linea por linea para saber cuantos codops son??  no les pido que posteen el codigo solo que me dijeran  cual podria ser la manera más optima y rapida de hacerlo

gracias


Título: Re: busqueda binaria en archivo
Publicado por: leosansan en 31 Diciembre 2013, 23:34 pm
Saludos

tengo la siguiente tabla de instrucciones(de un ensamblador) capturada en un archivo txt:
.............................................................
y tengo por ejemplo un código de operación que dice ABY, el cual lo tengo que buscar en este archivo, para ello pense que seria mas rápido si lo hago con una búsqueda binaria, pero me queda la duda de si tengo primero que guardar solamente los códigos de operación(ABA,ADB...) en una estructura de datos para después poder hacer la busqueda, o si tengo que recorrer el archivo completo linea por linea para saber cuantos codops son??
.....................................................


Por lo que tengo entendido, la búsqueda binaria se realiza en un array/estructura/lista previamente ordenada, por lo que en cualquier caso tendrías que recorrer el fichero entero y, guardados los copdops en donde te apetezca- -a mí me gusta la idea de un array -  primero ordenarlo y a continuación aplicarle la búsqueda binaria.

Pero es sólo una idea.


;-)  ;-) Felices Navidades y Próspero Año Nuevo.  ;-)  ;-)


¡¡¡¡ Saluditos! ..... !!!!


(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)


Título: Re: busqueda binaria en archivo
Publicado por: m@o_614 en 1 Enero 2014, 02:13 am
gracias leosansan, entonces no puedo hacer una busqueda binaria directamente de un archivo de texto???tomando en cuenta que los codops del archivo estan ya ordenados y otra duda que sería más conveniente por ejemplo si tengo la linea:

 ABA     NO   INH   1806     2   0   2

si primero tengo que buscar el codop y despues ver checar algunas cosas con los demas datos, que seria mas conveniente guardar solo el ABA en una estructura o toda la linea
 


Título: Re: busqueda binaria en archivo
Publicado por: leosansan en 1 Enero 2014, 06:33 am

........................
 entonces no puedo hacer una búsqueda binaria directamente de un archivo de texto???tomando en cuenta que los codops del archivo estan ya ordenados
........................


Si están ordenados puedes aplicar directamente la búsqueda binaria e ir guardando los resultados en otro fichero auxiliar o en un array/estructura/lista.

........................................
y otra duda que sería más conveniente por ejemplo si tengo la linea:

 ABA     NO   INH   1806     2   0   2

si primero tengo que buscar el codop y después ver checar algunas cosas con los demás datos, que seria mas conveniente guardar solo el ABA en una estructura o toda la linea
 

Yo creo que bastaría ir leyendo sólo los codops, con ellos guardas la línea a la que pertenecen y al final tendrás ordenadas cada línea.

;-)  ;-) Felices Navidades y Próspero Año Nuevo.  ;-)  ;-)


¡¡¡¡ Saluditos! ..... !!!!


(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)


Título: Re: busqueda binaria en archivo
Publicado por: amchacon en 1 Enero 2014, 14:53 pm
¿Que lenguaje? ¿C o C++?

En c++ yo lo haría tal que así:

Código
  1. string aux;
  2. string nombre; // variable con el código de operacion
  3.  
  4. getline(archivo,aux);
  5. stringstream linea(aux);
  6. linea>>nombre;

No es el sistema más eficiente pero si el más fácil de implementar.


Título: Re: busqueda binaria en archivo
Publicado por: m@o_614 en 2 Enero 2014, 00:34 am
El lenguaje es C, y el archivo  en el cual tengo que buscar un codop es este:

ABA           NO   INH   1806             2   0   2
ABX           NO   IDX   1AE5             2   0   2
ABY           NO   IDX   19ED           2    0   2
ADCA        SI   IMM   89ii             1   1   2
              DIR   99dd             1   1   2
              EXT   B9hhll         1   2   3
              IDX   A9xb             1   1   2
              IDX1   A9xbff         1   2   3
              IDX2   A9xbeeff      1   3   4
              [D,IDX] A9xb     1   1   2
              [IDX2]  A9xbeeff  1   3   4

el problema es que aqui si quiero hacer la busqueda binaria no se puede porque aunque tengo 4 codops(aby,adca, etc) el archivo tiene 11 lineas porque el adca tiene muchos modos de direccionamiento y no podria saber donde esta  el codop ubicado en la mitad del archivo, entonces no se como podria resolver eso, es la parte que me confunde mas!!! y luego despues de buscar el codop tengo que ver si tiene operando, los modos de direccionamiento e imprimirlos

gracias