<div class="gmail_extra">Perdonen, no sabía que saldría asi de mal, lo pongo aqui: <br><br><a href="http://paste2.org/p/1993316">http://paste2.org/p/1993316</a> </div><div class="gmail_extra">Y lo que puse debajo es esto:</div>
<div class="gmail_extra"><br></div><div class="gmail_extra"><div><div>En la búsqueda binaria, a ver me explico:</div><div>Pongo el ejemplo de que tenemos en la variable sup = 10, entonces resuelvo la ecuación para averiguar n -> n = 0 + (10 - 0) /2 = 5, bien ahora tengo n = 5, pero resulta que en ese registro no está lo que busco y ese teléfono es menor que el teléfono que yo he puesto, entonces a inf le daríamos el valor de n + 1 ( en nuestro caso 6) y vuelvo a pasar por la ecuación y lo que pasa es que si la hago: n = 6 + ( 10 - 6) / 2 = 5, es otra vez 5 porque sí sumo y resto el mismo número al final queda el mismo número, no se si me explico.</div>
<div>Ahora si el telefono de ese registro es mayor que el que he puesto yo sería sup = n -1, hay si cambía ya el resultado de la ecuación.</div><div><br></div><div>Espero que alguien sepa si es así porque es así ( y me lo explique si es posible) o si esta mal como pienso yo.</div>
<div><br></div><div>Un saludo y gracias :)</div></div><br class="Apple-interchange-newline"></div><div class="gmail_extra"><div class="gmail_quote">El 24 de abril de 2012 21:14, Marcos Collado Martín <span dir="ltr"><<a href="mailto:marquitos.mcm@gmail.com" target="_blank">marquitos.mcm@gmail.com</a>></span> escribió:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hola, bueno estuve leyendo el cursillo de los ficheros ya que no tenía mucha idea de estos y ví un algoritmo al que no le veia mucho sentido, o es que lo veo mal ( que seguramente que sea eso): esta en este tema: 
<a href="http://c.conclase.net/ficheros/index.php?cap=007#inicio" target="_blank">http://c.conclase.net/ficheros/index.php?cap=007#inicio</a> en el ejemplo que viene abajo del todo.<div>En esta función:<br><div><pre style="padding-top:10px;padding-right:10px;padding-bottom:10px;padding-left:10px;margin-top:0px;margin-bottom:5px;font-family:'Courier New',Courier,mono;font-size:14px;color:rgb(18,16,13);max-width:80em;max-height:20em;background-color:rgb(227,227,227);border-top-width:2px;border-right-width:2px;border-bottom-width:2px;border-left-width:2px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:blue;border-right-color:blue;border-bottom-color:blue;border-left-color:blue">
// Lee el registro desde el fichero de datos con el teléfono dado
<span style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;color:rgb(170,68,0);font-weight:bold">void</span> Leer(<a href="http://c.conclase.net/librerias/?ansitip=FILE" style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;color:rgb(18,16,13)" target="_blank">FILE</a> *fa, stRegistro &reg, <span style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;color:rgb(170,68,0);font-weight:bold">char</span> *telefono)
{
   <a href="http://c.conclase.net/librerias/?ansitip=FILE" style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;color:rgb(18,16,13)" target="_blank">FILE</a> *fi;
   stIndice ind;
   <span style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;color:rgb(170,68,0);font-weight:bold">long</span> inf, sup, n, nRegs;

   fi = <a href="http://c.conclase.net/librerias/?ansifun=fopen" style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;color:rgb(18,16,13)" target="_blank">fopen</a>("indices.ind", "rb");
   <a href="http://c.conclase.net/librerias/?ansifun=fseek" style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;color:rgb(18,16,13)" target="_blank">fseek</a>(fi, 0, <a href="http://c.conclase.net/librerias/?ansimac=SEEK_END" style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;color:rgb(18,16,13)" target="_blank">SEEK_END</a>);
   nRegs = <a href="http://c.conclase.net/librerias/?ansifun=ftell" style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;color:rgb(18,16,13)" target="_blank">ftell</a>(fi)/sizeof(stIndice);
   // Búsqueda binaria:
   inf = 0;
   sup = nRegs-1;
   <span style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;color:rgb(170,68,0);font-weight:bold">do</span> {
      n = inf+(sup-inf)/2;
      <a href="http://c.conclase.net/librerias/?ansifun=fseek" style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;color:rgb(18,16,13)" target="_blank">fseek</a>(fi, n*<span style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;color:rgb(170,68,0);font-weight:bold">sizeof</span>(stIndice), <a href="http://c.conclase.net/librerias/?ansimac=SEEK_SET" style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;color:rgb(18,16,13)" target="_blank">SEEK_SET</a>);
      <a href="http://c.conclase.net/librerias/?ansifun=fread" style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;color:rgb(18,16,13)" target="_blank">fread</a>(&ind, <span style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;color:rgb(170,68,0);font-weight:bold">sizeof</span>(stIndice), 1, fi);
      <span style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;color:rgb(170,68,0);font-weight:bold">if</span>(<a href="http://c.conclase.net/librerias/?ansifun=strcmp" style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;color:rgb(18,16,13)" target="_blank">strcmp</a>(ind.telefono, telefono) < 0) inf = n+1;
      <span style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;color:rgb(170,68,0);font-weight:bold">else</span> sup = n-1;
   } <span style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;color:rgb(170,68,0);font-weight:bold">while</span>(inf <= sup && <a href="http://c.conclase.net/librerias/?ansifun=strcmp" style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;color:rgb(18,16,13)" target="_blank">strcmp</a>(ind.telefono, telefono));
   // Si se encontró el teléfono, lee el registro, si no muestra mensaje.
   <span style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;color:rgb(170,68,0);font-weight:bold">if</span>(!<a href="http://c.conclase.net/librerias/?ansifun=strcmp" style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;color:rgb(18,16,13)" target="_blank">strcmp</a>(ind.telefono, telefono)) {
      <a href="http://c.conclase.net/librerias/?ansifun=fseek" style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;color:rgb(18,16,13)" target="_blank">fseek</a>(fa, ind.indice*<span style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;color:rgb(170,68,0);font-weight:bold">sizeof</span>(stRegistro), <a href="http://c.conclase.net/librerias/?ansimac=SEEK_SET" style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;color:rgb(18,16,13)" target="_blank">SEEK_SET</a>);
      <a href="http://c.conclase.net/librerias/?ansifun=fread" style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;color:rgb(18,16,13)" target="_blank">fread</a>(&reg, <span style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;color:rgb(170,68,0);font-weight:bold">sizeof</span>(stRegistro), 1, fa);
   }
   <span style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;color:rgb(170,68,0);font-weight:bold">else</span> {
      reg.valido = 'N';
      <a href="http://c.conclase.net/librerias/?ansifun=printf" style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;color:rgb(18,16,13)" target="_blank">printf</a>("Registro no encontrado\n");
   }
   <a href="http://c.conclase.net/librerias/?ansifun=fclose" style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;color:rgb(18,16,13)" target="_blank">fclose</a>(fi);
}</pre><div><br><div>En la búsqueda binaria, a ver me explico:</div></div></div><div>Pongo el ejemplo de que tenemos en la variable sup = 10, entonces resuelvo la ecuación para averiguar n -> n = 0 + (10 - 0) /2 = 5, bien ahora tengo n = 5, pero resulta que en ese registro no está lo que busco y ese teléfono es menor que el teléfono que yo he puesto, entonces a inf le daríamos el valor de n + 1 ( en nuestro caso 6) y vuelvo a pasar por la ecuación y lo que pasa es que si la hago: n = 6 + ( 10 - 6) / 2 = 5, es otra vez 5 porque sí sumo y resto el mismo número al final queda el mismo número, no se si me explico.</div>

<div>Ahora si el telefono de ese registro es mayor que el que he puesto yo sería sup = n -1, hay si cambía ya el resultado de la ecuación.</div><div><br></div><div>Espero que alguien sepa si es así porque es así ( y me lo explique si es posible) o si esta mal como pienso yo.</div>

<div><br></div><div>Un saludo y gracias :)</div></div>
</blockquote></div><br></div>