Foros del Web » Programación para mayores de 30 ;) » Programación General »

Problema con lista en Pascal

Estas en el tema de Problema con lista en Pascal en el foro de Programación General en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 28/05/2009, 03:25
Avatar de valenti77  
Fecha de Ingreso: julio-2008
Ubicación: Berisso, Buenos Aires
Mensajes: 244
Antigüedad: 15 años, 10 meses
Puntos: 4
Exclamación Problema con lista en Pascal

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!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:07.