Advertisement
Guest User

asdads

a guest
May 29th, 2015
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.65 KB | None | 0 0
  1. Practica Entrega
  2.  
  3.  
  4. Program sarasa;
  5.  
  6.  
  7. type
  8. cadena = string[40];
  9. rango = A..G;
  10. vn = array[rango] of real;
  11.  
  12. reg = record
  13. cod: integer;
  14. dni: integer;
  15. apellido: cadena;
  16. nombre: cadena;
  17. cat: rango;
  18. monto_ad: real;
  19. monto_des: real;
  20.  
  21. pn_lista = ^datos;
  22. datos = record
  23. elem: reg;
  24. sig: pn_lista;
  25. end;
  26.  
  27.  
  28. procedure leer(var r:reg);
  29.  
  30. begin
  31. writeln('Ingrese el codigo de cliente');
  32. read(cod);
  33. if (cod <> 0) then
  34. begin
  35. writeln('Ingrese el DNI del cliente');
  36. read(dni);
  37. writeln('Ingrese el apellido del cliente');
  38. read(apellido);
  39. writeln('Ingrese el nombre del cliente');
  40. read(nombre);
  41. writeln('Ingrese la categoria del cliente');
  42. read(cat);
  43. writeln('Ingrese el monto adicional a cobrar al cliente');
  44. read(monto_ad);
  45. writeln('Ingrese el monto de descuento del cliente');
  46. read(monto_des);
  47.  
  48. end;
  49.  
  50. end;
  51.  
  52.  
  53. procedure almacenar(var pri:pn_lista; client:reg);
  54.  
  55. var
  56. nuevo:pn_lista;
  57. begin
  58. new(nuevo);
  59. nuevo^.elem:= client;
  60. nuevo^.sig:= nil;
  61. if (pri = nil) then
  62. pri:= nuevo;
  63. else
  64. begin
  65. nuevo^.sig:=pri;
  66. pri:=nuevo;
  67. end;
  68. end;
  69.  
  70.  
  71. procedure calcular(var total:integer; vec:vn; r:reg);
  72.  
  73. begin
  74. total:= vec[r.cat] + r.monto_ad - r.monto_des;
  75. end;
  76.  
  77.  
  78. procedure informar(vec:vn; r:reg);
  79. var
  80. total:real;
  81. begin
  82. writeln('codigo del cliente ingresado');
  83. writeln(r.codigo);
  84. writeln('DNI del cliente ingresado');
  85. writeln(r.dni);
  86. calcular(total, vec, r);
  87. writeln('Monto total a cobrar al cliente');
  88. writeln('total');
  89. end;
  90.  
  91.  
  92.  
  93.  
  94. procedure lista_ordenada(var pri2:pn_lista, nuevo:pn_lista);
  95. var
  96. ant, actual:pn_lista;
  97. begin
  98.  
  99. if (pri2 = nil) then
  100. pri2:= nuevo
  101. else
  102. begin
  103. actual:=pri2
  104. while (actual <> nil) and (actual^.elem.apellido < nuevo^.elem.apellido) do //aca ya se que la condicion es por nombre y apellido, y que te pide hacer la lista ordenada con solo un par de campos, pero me embolé
  105.  
  106. begin
  107. ant:= actual;
  108. actual:= actual^.sig;
  109. end;
  110. if (ant = actual) then
  111. pri2:= nuevo
  112. else
  113. ant^.sig:= nuevo;
  114.  
  115. nuevo^.sig:= actual;
  116.  
  117. end;
  118.  
  119. end;
  120.  
  121.  
  122.  
  123. var
  124. client: reg;
  125. vec: vn;
  126. pri2, pri, actual: pn_lista;
  127.  
  128.  
  129. begin
  130. pri2:= nil;
  131. pri:= nil;
  132. leer(client);
  133. while (cod <> 0) do
  134. begin
  135. leer(client);
  136. almacenar(pri, client);
  137. end;
  138. writeln('Lectura Finalizada');
  139.  
  140. actual:= pri;
  141. while (actual <> nil) do
  142. begin
  143. if (pri^.elem.cat = 'A') then
  144. lista_ordenada(pri2, actual);
  145.  
  146. informar(vec, actual^.elem);
  147. ant:= actual;
  148. actual:= actual^.sig;
  149. end;
  150. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement