Pascal/Turbo Pascal - Ordenar lista con punteros

 
Vista:

Ordenar lista con punteros

Publicado por Pascual (94 intervenciones) el 15/03/2005 22:44:08
Hay que hacer un programa que detecte cuál es el nombre que debería ocupar la primera posición de la tabla (según el orden alfabético) y lo intercambie con el ubicado en la primera posición, si es que se da el caso. He hecho esto pero no me funciona. Es uno de mis primeros acercamientos con punteros.

PROGRAM ordenar_memoria;
USES Crt;
CONST
TopeTabla=4{20};
TYPE
Tnombre=string[20];
TpunNombre=^Tnombre;
Tindice=1..TopeTabla;
Ttabla=array[TIndice] of TpunNombre;
VAR
cont: integer;
lista, auxiliar: Ttabla;
nombre, a: TpunNombre;
PROCEDURE ubicarmenornombre (VAR tabla: Ttabla);
VAR
i: Tindice;
iteracion: integer;
aux: Ttabla;
BEGIN
iteracion:=0;
REPEAT
iteracion:=iteracion+1;
New (tabla[i]);
FOR i:=1 TO TopeTabla-1 DO
BEGIN
IF tabla[i]^>tabla[i+1]^ THEN
BEGIN
New (aux[i]);
aux[i]:=tabla[i];
tabla[i]:=tabla[i+1];
tabla[i+1]:=aux[i];
{Dispose (aux[i]);}
END;
END;
UNTIL iteracion=TopeTabla;
END;

BEGIN
ClrScr;
lista[1]^:='zapatero';
lista[2]^:='maria';
lista[3]^:='juan';
lista[4]^:='andres';
ubicarmenornombre (lista);
FOR cont:=1 TO TopeTabla DO
Writeln ('El nombre ',cont,' es: ',lista[cont]^);
Readln;
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:Ordenar lista con punteros

Publicado por Ivanchuk (1 intervención) el 18/03/2005 21:19:13
Toy leyendo el codigo.
lista[1]^:='zapatero';
lista[2]^:='maria';
lista[3]^:='juan';
lista[4]^:='andres';
no podes hacerlas sino reservas memoria antes. Es decir reservas memoria y luego asignas un valor. Para buscar el nombre no es necesario que declares otra tabla, simplemente un TPunNombre y lito sin siquiera reservar memoria, ya que solo tenes que intercambiar punteros y no valores. 1saludo....
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