Advertisement
Guest User

apreo de archivos de biblioteca

a guest
Oct 15th, 2012
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 3.17 KB | None | 0 0
  1. program EjBiblioteca;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6.   SysUtils,console,crt;
  7.  
  8. type
  9.     // tipo de registro para archivo maestro
  10.     RLector = record
  11.       nro : integer; // Nº de lector
  12.       nomApell : string[30]; // nombre y apellido
  13.       dni : string[10]; //documento nacional de identidad dd.ddd.ddd
  14.       domicilio : string[20];
  15.    end;
  16.  
  17.    // tipo de archivo para archivo maestro
  18.    FLectores = file of Rlector;
  19.  
  20.    // tipo de registro de archivo novedades
  21.    RNovedad = record
  22.     nro : integer; //  Nº lector
  23.       cantDevTerm : integer; // cantidad de libros devueltos en termino
  24.       cantDevFTerm : integer; // cantidad de libros devueltos fuera de termino
  25.    end;
  26.  
  27.    // tipo de archivo para archivo novedades
  28.  
  29.    FNovedades = file of RNovedad;
  30.  
  31.  
  32. function leer(var arch:FLectores;var reg:RLector):boolean;
  33. begin
  34.     if  (eof(arch)) then begin
  35.        leer := true;
  36.     end else begin
  37.             read(arch,reg);
  38.          leer := false;
  39.     end;
  40. end;
  41.  
  42. function leer2(var arch:FNovedades;var regN:RNovedad):boolean;
  43. begin
  44.     if  (eof(arch)) then begin
  45.        leer2 := true;
  46.     end else begin
  47.             read(arch,regN);
  48.          leer2 := false;
  49.     end;
  50. end;
  51.  
  52. procedure CabLector(reg:RLector);
  53. begin
  54.     writeln('Numero de lector: ',reg.nro);
  55.    writeln('Nombre:  ',reg.nomApell);
  56. end;
  57.  
  58.  
  59. procedure procesoLector(regN:RNovedad;var totP:integer);
  60. begin
  61.     writeln('Cantidad de libros devueltos en termino: ',regN.cantDevTerm);
  62.     writeln('Cantidad de libros devueltos fuera de termino: ',regN.cantDevFTerm);
  63.     if (regN.cantDevFTerm >= 5) then begin
  64.             writeln('Observacion:  ******* ');
  65.     end;
  66.     // acumulador del total de prestamos
  67.     totP := totP + (regN.cantDevTerm + regN.cantDevFTerm);
  68.  
  69. end;
  70.  
  71.  
  72.  
  73. // programa principal
  74. var archM : FLectores; // archivo maestro
  75. var archN : FNovedades; // archivo novedades
  76. var finN,finM : boolean;
  77. var regL:RLector;regN:RNovedad;
  78. var TotPrestamos : integer;
  79. begin
  80.       assign(archM,'MAESTRO.dat');
  81.       assign(archN,'NOVEDADES.dat');
  82.       // abro los archivos que seguramente existen
  83.       {$I-}reset(archM);{$I+}
  84.       {$I-}reset(archN);{$I+}
  85.       finM := leer(archM,regL);
  86.       finN := leer2(archN,regN);
  87.       totPrestamos := 0;
  88.      
  89.       // realizo el apareo con los dos archivos
  90.       while (not (finM)) and (not(finN)) do begin
  91.             if ((regL.nro) = (regN.nro)) then begin
  92.                 CabLector(RegL);
  93.                procesoLector(RegN,totPrestamos);
  94.                finM := leer(archM,regL);
  95.                    finN := leer2(archN,regN);
  96.             end else begin
  97.                     if ((regL.nro) < (regN.nro)) then begin
  98.                       finN := leer2(archN,regN);
  99.                   end else begin
  100.                         finM := leer(archM,regL);
  101.                   end;
  102.             end;
  103.       end;
  104.       if not (finM) then begin
  105.         while not finM do begin
  106.                 finM := leer(archM,regL);
  107.           end;
  108.       end else begin
  109.         while not finN do begin
  110.             finN := leer2(archN,regN);
  111.          end;
  112.       end;
  113.       close(archM);
  114.       close(archN);
  115.       writeln ('Total de prestamos: ',totPrestamos);
  116.       writeln('Presione una tecla para salir ');
  117.       readkey;
  118.  
  119. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement