Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Practica Entrega
- Program sarasa;
- type
- cadena = string[40];
- rango = A..G;
- vn = array[rango] of real;
- reg = record
- cod: integer;
- dni: integer;
- apellido: cadena;
- nombre: cadena;
- cat: rango;
- monto_ad: real;
- monto_des: real;
- pn_lista = ^datos;
- datos = record
- elem: reg;
- sig: pn_lista;
- end;
- procedure leer(var r:reg);
- begin
- writeln('Ingrese el codigo de cliente');
- read(cod);
- if (cod <> 0) then
- begin
- writeln('Ingrese el DNI del cliente');
- read(dni);
- writeln('Ingrese el apellido del cliente');
- read(apellido);
- writeln('Ingrese el nombre del cliente');
- read(nombre);
- writeln('Ingrese la categoria del cliente');
- read(cat);
- writeln('Ingrese el monto adicional a cobrar al cliente');
- read(monto_ad);
- writeln('Ingrese el monto de descuento del cliente');
- read(monto_des);
- end;
- end;
- procedure almacenar(var pri:pn_lista; client:reg);
- var
- nuevo:pn_lista;
- begin
- new(nuevo);
- nuevo^.elem:= client;
- nuevo^.sig:= nil;
- if (pri = nil) then
- pri:= nuevo;
- else
- begin
- nuevo^.sig:=pri;
- pri:=nuevo;
- end;
- end;
- procedure calcular(var total:integer; vec:vn; r:reg);
- begin
- total:= vec[r.cat] + r.monto_ad - r.monto_des;
- end;
- procedure informar(vec:vn; r:reg);
- var
- total:real;
- begin
- writeln('codigo del cliente ingresado');
- writeln(r.codigo);
- writeln('DNI del cliente ingresado');
- writeln(r.dni);
- calcular(total, vec, r);
- writeln('Monto total a cobrar al cliente');
- writeln('total');
- end;
- procedure lista_ordenada(var pri2:pn_lista, nuevo:pn_lista);
- var
- ant, actual:pn_lista;
- begin
- if (pri2 = nil) then
- pri2:= nuevo
- else
- begin
- actual:=pri2
- 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é
- begin
- ant:= actual;
- actual:= actual^.sig;
- end;
- if (ant = actual) then
- pri2:= nuevo
- else
- ant^.sig:= nuevo;
- nuevo^.sig:= actual;
- end;
- end;
- var
- client: reg;
- vec: vn;
- pri2, pri, actual: pn_lista;
- begin
- pri2:= nil;
- pri:= nil;
- leer(client);
- while (cod <> 0) do
- begin
- leer(client);
- almacenar(pri, client);
- end;
- writeln('Lectura Finalizada');
- actual:= pri;
- while (actual <> nil) do
- begin
- if (pri^.elem.cat = 'A') then
- lista_ordenada(pri2, actual);
- informar(vec, actual^.elem);
- ant:= actual;
- actual:= actual^.sig;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement