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.
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


0