Lo que quiero hacer es seleccionar obras de un archivo que superen el 85% del total de superficie cubierta, lo modifique al 85% y lo guarde en una lista, sin tocar el archivo original, luego que se imprima tal lista, pero lo que me hace es imprimirme TODO el mismo archivo, con las cosas modificadas. Tengo dos procesos, uno imp lista y otro el archivo, y la diferencia entre este y estos dos es que el que les muestro cambia los valores, pero me imprime TODO
Aca esta el proceso:
Código:
  
Desde ya muchas gracias por su ayuda, saludos! Procedure Controlar_superficies(VAR a:archi; VAR l:lista);  {modifica las superficies que cubren mas del 85% de la superficie del terreno, luego imprime la lista de los que estuvieron en infracción sin modificar el archivo, permitiendo ver cuales eran los datos originales}
Const
porc=0.85;
var
r:reg;
porciento:real;
rta:char;
p,actual,anterior:lista;
suplibre,supterr:real;
Begin
if verifica(a)=false then
                  writeln('Archivo no existente: Recuerde que primero debe crear el archivo mediante la opcion 1 del menu, asi luego poder verificar que obras no cumplen la reglamentación')
                  else
                  begin
                  reset(a);
                  while not((eof(a))) do begin
                  read(a,r);
                  new(p);
                  supterr:=r.sup_terreno;
                  porciento:=supterr*porc;
                  if porciento < r.sup_cubierta then
                  suplibre:=supterr-porciento;
                  p^.nom_arq:=r.nom_arq;
                  p^.nom_prop:=r.nom_prop;
                  p^.fecha_inicio:=r.fecha_inicio;
                  p^.fecha_fin:=r.fecha_fin;
                  p^.t_construccion:=r.t_construccion;
                  p^.sup_terreno:=r.sup_terreno;
                  p^.sup_cubierta:=porciento;
                  p^.sup_libre:=suplibre;
                  p^.ps:=nil;
                  actual:=l;
                  anterior:=nil;
                  while actual <> nil do
                  begin
                  anterior:=actual;
                  actual:=actual^.ps;
                  end;
                  if anterior <> nil then
                  anterior^.ps:=p
                  else
                  l:=p;
                  end;
                  writeln('¿Desea Imprimir la lista de las obras cuya superficie cubierta superaba el 85% de la superficie total?(s/n)');
                  readln(rta);
                  if rta='s' then IMP_LISTA(l);
                  end
end;
 
 

 Problema con lista en Pascal
 Problema con lista en Pascal 
