Advertisement
eduardovp97

Pregunta1 PC3 2014-1

Oct 30th, 2015
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 3.60 KB | None | 0 0
  1. program project1;
  2. Type ArrStrP = array[1..500] of String;
  3.   ArrStrG = array[1..1100] of String;    // P = pequeño
  4.   ArrIntP = array[1..500] of Integer;    // G = grande
  5.   ArrIntG = array[1..1100] of Integer;
  6.   ArrReal = array[1..1100] of Real;
  7.  
  8.   procedure prepararArchivos(var archIn,archCli,archProd,archBol:Text);
  9.   var nomb:String;
  10.     begin
  11.      writeln('Ingrese el nombre del archivo de boletas');
  12.      readln(nomb);
  13.      assign(archIn,nomb);
  14.      reset(archIn);
  15.      assign(archCli,'clientes.txt');
  16.      assign(archProd,'productos.txt');
  17.      assign(archBol,'boletas.txt');
  18.      rewrite(archCli);
  19.      rewrite(archProd);
  20.      rewrite(archBol);
  21.     end;
  22.  
  23. procedure cerrarArchivos(var archIn,archCli,archProd,archBol:Text);
  24. begin
  25.  close(archIn);
  26.  close(archCli);
  27.  close(archProd);
  28.  close(archBol);
  29. end;
  30.  
  31. procedure imprimir(fact,dd,mm,aa,dni:Integer;var archBol:Text);
  32. begin
  33.  writeln(archBol,fact);
  34.  writeln(archBol,dd,'/',mm,'/',aa);
  35.  writeln(archBol,dni);
  36. end;
  37.  
  38. procedure verificar(var i,dni:Integer;nomb,dir:String;var dniC:ArrIntP;
  39.   var nombC,dirC:ArrStrP);
  40. var j:Integer; repetido: Boolean;
  41. begin
  42.  repetido:=false;
  43.  if (i = 0) then begin
  44.    inc(i);
  45.    dniC[i] := dni;
  46.    nombC[i] := nomb;
  47.    dirC[i] := dir;
  48.  end else begin
  49.    for j:=1 to (i) do begin
  50.       if(dniC[j]=dni) then repetido:=true;
  51.    end;
  52.    if (repetido=false) then begin
  53.      inc(i);
  54.      dniC[i]:= dni;
  55.      nombC[i]:=nomb;
  56.      dirC[i]:= dir;
  57.    end;
  58.  end;
  59. end;
  60.  
  61. procedure verificar2(var j,cod:Integer; desc:String; pu:Real;
  62.           codP:ArrIntG; descP:ArrStrG; puP:ArrReal);
  63. var k:Integer;
  64.   repetido: Boolean;
  65. begin
  66.  repetido:=false;
  67.  if(j=0) then begin
  68.    inc(j);
  69.    codP[j]:= cod;
  70.    descP[j]:= desc;
  71.    puP[j]:= pu;
  72.  end else begin
  73.     for k:=1 to j do begin
  74.        if(codP[k]=cod) then repetido:=true;
  75.     end;
  76.     if (repetido=false) then begin
  77.       inc(j);
  78.       codP[j] := cod;
  79.       descP[j]:= desc;
  80.       puP[j] := pu;
  81.     end;
  82.  end;
  83. end;
  84.  
  85. procedure imprimirArch1(nd:Integer;var dniC:ArrIntP;
  86.           var nombC,dirC:ArrStrP; var archCli:Text);
  87. var i:Integer;
  88. begin
  89.  for i:=1 to nd do begin
  90.      writeln(archCli,dniC[i]);
  91.      writeln(archCli,nombC[i]);
  92.      writeln(archCli,dirC[i]);
  93.  end;
  94. end;
  95.  
  96. procedure imprimirArch2(nd:Integer; var codP:ArrIntG; var descP:ArrStrG;
  97.           var puP:ArrReal; var archProd:Text);
  98. var i:Integer;
  99. begin
  100.  for i:=1 to nd do begin
  101.      writeln(archProd,codP[i]);
  102.      writeln(archProd,descP[i]);
  103.      writeln(archProd,puP[i]);
  104.  end;
  105. end;
  106.  
  107. procedure emitirReporte(var archIn,archCli,archProd,archBol:Text);
  108. var  codP : ArrIntG;
  109.   descP : ArrStrG;
  110.   puP : ArrReal;
  111.   dniC : ArrIntP;
  112.   nombC,dirC : ArrStrP;
  113.   nomb,dir,desc : String;
  114.   i,j,fact,dd,mm,aa,dni,cod,cant : Integer;
  115.   pu,x:Real;
  116. begin
  117.  i:= 0;
  118.  j:= 0;
  119.  while not eof(archIn) do begin
  120.    readln(archIn,fact,dd,mm,aa,dni);
  121.    readln(archIn,nomb);
  122.    readln(archIn,dir);
  123.    verificar(i,dni,nomb,dir,dniC,nombC,dirC);
  124.    imprimir(fact,dd,mm,aa,dni,archBol);
  125.    repeat
  126.      readln(archIn,cod);
  127.      if (cod <> -1) then begin
  128.        readln(archIn,cod);
  129.        readln(archIn,desc);
  130.        readln(archIn,cant,pu,x);
  131.        verificar2(j,cod,desc,pu,codP,descP,puP);
  132.        writeln(archBol,cod);
  133.        writeln(archBol,cant);
  134.      end;
  135.    until (cod=-1) ;
  136.  end;
  137.  imprimirArch1(i,dniC,nombC,dirC,archCli);
  138.  imprimirArch2(j,codP,descP,puP,archProd);
  139.  
  140. end;
  141.  
  142. var archIn,archCli,archProd,archBol:Text;
  143. begin
  144.   prepararArchivos(archIn,archCli,archProd,archBol);
  145.   emitirReporte(archIn,archCli,archProd,archBol);
  146.   cerrarArchivos(archIn,archCli,archProd,archBol);
  147. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement