Guest User

Untitled

a guest
Jun 18th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.21 KB | None | 0 0
  1. Program ej2;
  2. uses sysutils;
  3. const
  4. valoralto = 99999;
  5. type
  6. producto = record
  7. codigo : integer;
  8. nombre : string[20];
  9. descripcion : string[30];
  10. stock : integer;
  11. end;
  12. proddet = record
  13. codigo : integer;
  14. vendidos : integer;
  15. end;
  16. detalle = file of proddet;
  17. maestro = file of producto;
  18. detalles = array [0..29] of detalle;
  19. dreg = array [0..29] of proddet;
  20.  
  21. procedure leerD(var d : detalle; var p : proddet);
  22. begin
  23. if not eof(d) then
  24. read(d, p)
  25. else
  26. p.codigo := valoralto;
  27. end;
  28.  
  29. procedure leerM(var m : maestro; var p : producto);
  30. begin
  31. if not eof(m) then
  32. read(m, p)
  33. else
  34. p.codigo := valoralto;
  35. end;
  36.  
  37. procedure sumarStock(var p : producto; var dets : detalles; var prods : dreg);
  38. var
  39. i : integer;
  40. begin
  41. for i := 0 to 29 do begin
  42. while((prods[i].codigo = p.codigo) and (dreg[i].codigo <> valoralto)) do begin
  43. p.stock := p.stock - prods[i].vendidos;
  44. leerD(dets[i], prods[i]);
  45. end;
  46. end;
  47. end;
  48.  
  49. procedure actualizar(var m : maestro; var dets : detalles; var ns : text);
  50. var
  51. regs : dreg;
  52. p : producto;
  53. i, stockPrevio : integer;
  54. begin
  55. {Carga inicial de los detalles}
  56. for i := 0 to 29 do
  57. leerD(dets[i], regs[i]);
  58. leerM(m, p);
  59. while(p.codigo <> valoralto) do begin
  60. stockPrevio := p.stock;
  61. sumarStock(p, dets, regs);
  62. if stockPrevio = p.stock then
  63. writeln('No se vendio el producto ', p.nombre)
  64. else begin
  65. writeln(ns, p.codigo, ' ', p.nombre);
  66. writeln(ns, p.stock, ' ', p.descripcion);
  67. end;
  68. {Actualizar el archivo maestro}
  69. seek(m, filepos(m)-1);
  70. write(m, p);
  71. leerM(m, p);
  72. end;
  73. end;
  74.  
  75. var
  76. m : maestro;
  77. dets : detalles;
  78. i : integer;
  79. nostock : text;
  80. begin
  81. assign(nostock, 'sinstock.txt');
  82. rewrite(nostock);
  83. assign(m, 'maestro.dat');
  84. reset(m);
  85. for i := 0 to 29 do begin
  86. assign(dets[i], 'det'+IntToStr(i)+'.dat');
  87. reset(dets[i]);
  88. end;
  89. actualizar(m, dets, nostock);
  90. close(m);
  91. close(nostock);
  92. for i := 0 to 29 do
  93. close(dets[i]);
  94. end.
Add Comment
Please, Sign In to add comment