UNIDAD 5: REGISTROS Y ARCHIVOS SECUENCIALES

TEMA LINUX GCC 7: BUSQUEDA

En este TEMA LINUX GCC se analiza la busqueda de un registro o renglón determinado.

En este proceso el usuario del programa quiere que se despliegue un y solo un registro de información proporcionando un dato de busqueda generalmente la clave del registro.

Prog21.html

<HTML>
<FORM ACTION=/~lauro/cgi-bin/prog21.cgi METHOD=post>
CLAVE A BUSCAR:<INPUT TYPE=text NAME=CLAVE><BR>
<INPUT TYPE=submit VALUE=BUSCAR>
</FORM></HTML>

corrida:

image72.jpg

prog21.cpp

#include <string>
#include <iostream>
#include <lcnet.h>
using namespace std;
static struct {
int clave;
char nombre[30];
float peso;
} alumno;
int main() {
// cargando clave a buscar
int clave=getinteger("CLAVE");
cout << "Content-type: text/html\n\n";
cout << "<html>" << endl;
//abriendo, leyendo,cargando estructura
FILE *archdisco;
archdisco = fopen("//home//lauro//alumnos.dat","r+");
// aqui siempre debe empezar el ciclo de lectura
// y fread() regresa siempre cuantas estructuras leyo
while(fread(&alumno,sizeof(alumno),1,archdisco)==1)
{
// desplegando estructura a buscar
if ( clave == alumno.clave)cout << alumno.clave <<" "<<alumno.nombre<<" "<<alumno.peso<<endl;
}; // aqui termina while
// no olvidar cerrar archivo y siempre fuera de while
// tampoco olvidar cerrar la pagina
fclose(archdisco);
cout << "</html>" << endl;
return 0;
}

corrida:

image73.jpg

Recordar que la caracteristica principal de un archivo secuencial, es que no es posible acceder o accesar a un registro o renglon especifico o determinado sino que se debera recorrer todos los n-1 renglones anteriores.

Esta situación se da porque al construir un registro cualquiera con una montón de campos strings a la hora de almacenar dichos registros, estos registros tendran tamaños diferentes, esta es la razon principal por la cual al buscar un registro especifico se tiene que recorrer y validar todos los registros anteriores.

En el programa ejemplo se esta usando un ciclo while fread para recorrer todos los registros del archivo, por supuesto que si se tiene un archivo con 5000 registro y el buscado es el 4500 al menos se se tendra que recorrer todos los 4499 registros anteriores.

PROBLEMAS PROPUESTOS

Construirles programas de busquedas a los archivos ya construidos.

Politica de Privacidad