Pascal/Turbo Pascal - Please!!!

   
Vista:

Please!!!

Publicado por Elelna (7 intervenciones) el 08/05/2008 13:03:02
Holaa!!!!!!


Tengo un gran problema. aqui os adjunto la parte del codigo donde me da error. weno os explico lo que quiero acer. En este procedimiento quiero mostrar por pantalla una lista ordenada por los apellidos. El problema viene dado porque no puedo declarar en el procedimiento un parametro dentro del tipo Tap porque me da un error de desbordamiento, con lo que he creado un arry de 150 posiciones (las que pueden estar ocupadas con mucho y un array auxiliar) para asi coger el numero de asiento del arry del tipo Tasiento que es bidimensional [25,6]. Pero al ejecutar este subprograma me da un error de fuera de rango y no se porque....

weno gracias a todos. Se que esta complejo de solucionar pero de toas formas gracias.

--------------------------------------------------------------------------------

type

TAsiento=RECORD
ocupado:boolean; {indica si esta o no ocupado el asiento}
nombre:TNombre;{nombre del pasajero}
apellidos:Tapellidos;{apellidos del pasajero}
pasaporte:TPasaporte;{numero del pasaporte}
pais:TPais; {nacionalidad}
fNacim:TFecha; {fecha de nacimiento}
numMaletas:TNumMaletas;{numero de maletas facturadas con las que viaja}
end;

Pasaje=ARRAY [Tfilas,TColumnas] Of TAsiento;
--------------------------------------------------------------------------------

PROCEDURE listadoApellids (var reserva4:Tpasaje);

TYPE

Tap=RECORD
fil:integer;
col:char;
end;

TLista=ARRAY [1..150] OF Tap;
Tauxiliar=ARRAY [1..150] OF Tap;

VAR

xx1,y1,k,k1,conta,co1,p,f1:integer;
Lista:TLista;
auxi:Tauxiliar;
co2:char;

Begin

k:=0;
k1:=1;
conta:=0;
p:=1;

FOR xx1:=1 TO 150 DO
BEGIN
Lista[xx1].fil:=0;
end;

FOR xx1:=1 TO 25 DO
BEGIN
for y1:=1 to 6 do
begin
if (reserva4[xx1,char(64+y1)].ocupado=true) then
begin
k:=(xx1*y1);
Lista[k].fil:=xx1;
Lista[k].col:=char(y1+64);
conta:=conta+1;
end;{if}
END; {fin de 2 for}
END; {fin de 1 for}

if k>0 then
begin
writeln('Ahora le vamos a mostrar el listado ordenado por apellidos.');
writeln(' (pulse enter pasar al siguiente pasajero)');

FOR xx1:=1 TO 25 DO
BEGIN
for y1:=1 to 5 do
begin
if (reserva4[xx1,char(64+y1)].apellidos>reserva4[xx1,char(65+y1)].apellidos) then
begin
k:=(xx1*y1);
k1:=(xx1*(y1+1);
auxi[p].fil:=xx1;
auxi[p].col:=char(64+y1);
Lista[k].fil:=xx1;
Lista[k].col:=char(64+y1);
Lista[k1].fil:=xx1;
Lista[k1].col:=char(65+y1);
p:=p+1;
end;{if}
END; {fin de 2 for}
END;

writeln(' ');

FOR xx1:=1 TO 25 DO
BEGIN
for y1:=1 to 5 do
begin
if (reserva4[xx1,char(64+y1)].ocupado=true) then
begin
k:=(xx1*y1);
k1:=(xx1*(1+y1));
co1:=lista[k].fil;
co2:=lista[k1].col;

writeln('Los apellidos son: ',reserva4[co1,co2].apellidos,'.');
writeln('El nombre es: ',reserva4[co1,co2].nombre,'.');
writeln('N§ de pasaporte: ',reserva4[co1,co2].pasaporte,'.');
writeln('Su pais es: ',reserva4[co1,co2].pais);
writeln('El numero de asiento es: ',xx1,char(y1+64),'.');
writeln('El n§ de maletas facturadas es: ',reserva4
[co1,co2].nummaletas);
readln;
end
end;
end;
writeln('En estos momentos no hay m s pasajeros en el avion.');
end{if}
else
begin
writeln('Lo sentimos pero no hay ningun asiento reservado.');
writeln(' ');
end;

end;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Please!!!

Publicado por Elena (7 intervenciones) el 10/05/2008 12:01:03
Ya lo he solucionado, gracias de todas formas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar