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;