ADA - Error al compilar(Listas dinamicas)

 
Vista:

Error al compilar(Listas dinamicas)

Publicado por Ander Martin (2 intervenciones) el 02/06/2011 23:24:04
Hola.Al compilar el siguente programa se produce un CONSTRAINT_ERROR y nose como solucionarlo, el erro se produce en donde e subrayado.El programa, son 3 apuntadores a una lista y dependiento si la persona q me pasan es de una clase o otra( noble o plebeyo) pues o la tengo q meter despues del apuntador del ultimo noble o despues de el ultimo, al final de la lista(los nobles siempre van primero).y en ambos casos actualizar el apuntador y pasarlo al objetoq se a metido..
si alguien me pudiese explicar el xq d este error y como solucionarlo le estaria muy muy muy agradecido!!!gracias de antemano


procedure Añadir (
Cm : in out T_Cola_Medieval;
E : in T_Persona) is
-- añade el elemento E en CM.

Nuevo,Aux : A_Nodo;
begin
Nuevo:= new T_Nodo;
Nuevo.Info:=E;
if Cm.Primero/=null then
if Nuevo.Info.Noble then
Nuevo.sig:=Cm.Ult_Noble;
Aux:=Nuevo.sig;
Nuevo.Sig:=Aux;
Cm.Ult_Noble.Sig:=Nuevo;
Cm.Ult_Noble:=Nuevo;

else
Nuevo.sig:=null;
Cm.Ultimo.Sig:=Nuevo;
Cm.Ultimo:=Nuevo;
end if;
else
Nuevo.Sig:=null;
if Nuevo.Info.Noble=false then
Cm.Primero:=Nuevo;
Cm.Primero:=Nuevo;
else
Cm.Primero:=Nuevo;
Cm.Primero:=Nuevo;
Cm.Primero:=Nuevo;
end if;
end if;

end Añadir;




Y la declaracion de los tipos:


type T_Nodo;
type A_Nodo is access T_Nodo;
type T_Nodo is
record
Info : T_Persona;
Sig : A_Nodo;
end record;

type T_Cola_Medieval is
record
Primero,
Ult_Noble,
Ultimo : A_Nodo;
end record;




subtype T_Info is String(1..20);

type T_Persona is
record
Noble : Boolean;
Info : T_Info; -- otros tipos de información
end record;
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

Error al compilar(Listas dinamicas)

Publicado por Ander Martin (2 intervenciones) el 02/06/2011 23:49:19
Perdon soy el mismo q colgo la etiqueta, me di cuenta de q no estaba bien lo q puse el codigo del programa es el siguente y el error se da en la fila marcada, gracias

procedure Añadir (
Cm : in out T_Cola_Medieval;
E : in T_Persona) is
-- añade el elemento E en CM.

Nuevo,Aux : A_Nodo;
begin
Nuevo:= new T_Nodo;
Nuevo.Info:=E;
if Cm.Primero/=null then
if Nuevo.Info.Noble then
Nuevo.sig:=Cm.Ult_Noble;
Aux:=Nuevo.sig;
Nuevo.Sig:=Aux;
Cm.Ult_Noble.Sig:=Nuevo; ------------------------------>EL ERROR SE DA EN ESTA FILA!!
Cm.Ult_Noble:=Nuevo;

else
Nuevo.sig:=null;
Cm.Ultimo.Sig:=Nuevo;
Cm.Ultimo:=Nuevo;
end if;
else
Nuevo.Sig:=null;
if Nuevo.Info.Noble=false then
Cm.Primero:=Nuevo;
Cm.Ultimo:=Nuevo;
else
Cm.Primero:=Nuevo;
Cm.Ult_Noble:=Nuevo;
Cm.Ultimo:=Nuevo;
end if;
end if;

end Añadir;
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