Hola a todos, les cuento que estoy a horas de entregar un proyecto, y me anda fallando un proceso y no encuentro el porqué.
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:
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;
Desde ya muchas gracias por su ayuda, saludos!