Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program EjBiblioteca;
- {$APPTYPE CONSOLE}
- uses
- SysUtils,console,crt;
- type
- // tipo de registro para archivo maestro
- RLector = record
- nro : integer; // Nº de lector
- nomApell : string[30]; // nombre y apellido
- dni : string[10]; //documento nacional de identidad dd.ddd.ddd
- domicilio : string[20];
- end;
- // tipo de archivo para archivo maestro
- FLectores = file of Rlector;
- // tipo de registro de archivo novedades
- RNovedad = record
- nro : integer; // Nº lector
- cantDevTerm : integer; // cantidad de libros devueltos en termino
- cantDevFTerm : integer; // cantidad de libros devueltos fuera de termino
- end;
- // tipo de archivo para archivo novedades
- FNovedades = file of RNovedad;
- function leer(var arch:FLectores;var reg:RLector):boolean;
- begin
- if (eof(arch)) then begin
- leer := true;
- end else begin
- read(arch,reg);
- leer := false;
- end;
- end;
- function leer2(var arch:FNovedades;var regN:RNovedad):boolean;
- begin
- if (eof(arch)) then begin
- leer2 := true;
- end else begin
- read(arch,regN);
- leer2 := false;
- end;
- end;
- procedure CabLector(reg:RLector);
- begin
- writeln('Numero de lector: ',reg.nro);
- writeln('Nombre: ',reg.nomApell);
- end;
- procedure procesoLector(regN:RNovedad;var totP:integer);
- begin
- writeln('Cantidad de libros devueltos en termino: ',regN.cantDevTerm);
- writeln('Cantidad de libros devueltos fuera de termino: ',regN.cantDevFTerm);
- if (regN.cantDevFTerm >= 5) then begin
- writeln('Observacion: ******* ');
- end;
- // acumulador del total de prestamos
- totP := totP + (regN.cantDevTerm + regN.cantDevFTerm);
- end;
- // programa principal
- var archM : FLectores; // archivo maestro
- var archN : FNovedades; // archivo novedades
- var finN,finM : boolean;
- var regL:RLector;regN:RNovedad;
- var TotPrestamos : integer;
- begin
- assign(archM,'MAESTRO.dat');
- assign(archN,'NOVEDADES.dat');
- // abro los archivos que seguramente existen
- {$I-}reset(archM);{$I+}
- {$I-}reset(archN);{$I+}
- finM := leer(archM,regL);
- finN := leer2(archN,regN);
- totPrestamos := 0;
- // realizo el apareo con los dos archivos
- while (not (finM)) and (not(finN)) do begin
- if ((regL.nro) = (regN.nro)) then begin
- CabLector(RegL);
- procesoLector(RegN,totPrestamos);
- finM := leer(archM,regL);
- finN := leer2(archN,regN);
- end else begin
- if ((regL.nro) < (regN.nro)) then begin
- finN := leer2(archN,regN);
- end else begin
- finM := leer(archM,regL);
- end;
- end;
- end;
- if not (finM) then begin
- while not finM do begin
- finM := leer(archM,regL);
- end;
- end else begin
- while not finN do begin
- finN := leer2(archN,regN);
- end;
- end;
- close(archM);
- close(archN);
- writeln ('Total de prestamos: ',totPrestamos);
- writeln('Presione una tecla para salir ');
- readkey;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement