Problema Pascal

V

Buenos dias, tengo que crear un porgrama que cree una tabla de 50 posiciones de manera dinámica, que añadaa unos valores arbitrarios y que despues enseñe el resultado en pantalla ordenado, sin embargo, tengo serios problemas con las referecnias.¿Me podeis guiar?
aqui va el programa:

program tabladin;
const N=50;
type Tabla1N= array[1..N] of real;
var tt: tabla1N;
k: 1..N; fin: Char; j:0..N; q:1..N; p:1..2*N; aux: real;
procedure CargarTabla (var tt: Tabla1N);
var k: 1..N;
begin
Randomize;
for k:=1 to N do
tt[k]:=Random;

end;
function min(x,y :integer) :integer;
var q: integer;
begin
if x+1<=y then q:=x+1
else q:=y;
min:=y
end;
procedure MostrarTabla(tt: Tabla1N);
var k: 1..N; r,s,t: integer;
begin
r:= 1; s:=5; t:=0;
repeat
for k:=r to s do
write('',tt[k]);
r:=r+5; s:=s+5; t:=t+1;
until t=9;
readln;
end;

procedure OrdenarTabla (var tt: Tabla1N);
begin
j:= N div 2;
while j>0 do
k:=j;
p:=2j;
q:= min(p+1,N);
while p<= N do begin
if tt[p]<tt[q] then
begin
aux:=tt[k];
tt[k]:=tt[p];
tt[p]:=aux;
end
else begin end;
k:=p;
p:=2
p;
q:=min(p+1,N);
end;
j:=j-1;
end;
begin
j:=N;
while j>1 do begin
aux:=tt[1];
tt[1]:=tt[j];
tt[j]:=aux;
j:=j-1;
k:=1;
p:=2;
q:=min(3,j);
while p<=j do begin
if tt[p]<tt[q] then p:=q
else begin end;
end;
if tt[k]<tt[p] then begin
aux:=tt[k];
tt[k]:=tt[p];
tt[p]:=aux;
end
else begin end;
end;
k:=p;
p:=2*p;
q:=min(p+1,j);

function OrdenadaEnCreciente(tt: Tabla1N): Boolean;
var k:1..N-1; cont: Integer; ord: Boolean;
begin
for k:1 to N-1 do
begin
if tt[k]<=tt[k+1] then begin end
else cont:=cont+1; end;

    if cont=0 then  ord:=true
    else ord:=false; end;
    OrdenadaEnCreciente:=ord;

end;

begin

repeat
writeln('A continuaci¢n se cargar  una tabla');
new(tt);
if tt<>nil then begin
CargarTabla(tt[k]^);
MostrarTabla(tt[k]^);
OrdenarTabla(tt[k]^);
MostrarTabla(tt[k]^);
writeln('Esta la tabla ordenada');
OrdenadaEnCreciente(tt[k]^);
readln
writeln('Desea crear otra tabla S/N');
readln(fin);
end
else Error();
until char <>'s';
end.

V

Me da error de compilación en la segunda function :S.

ValaV

Revisa la funcion ordenar tabla poruqe "else begin end;"
no es una instruccion muy correcta
y
"else begin end;
end;
k:=p;
p:=2*p;
q:=min(p+1,j);

<<--Aqui en medio faltan cosas NOO¿????-->>

function OrdenadaEnCreciente(tt: Tabla1N): Boolean;
var k:1..N-1; cont: Integer; ord: Boolean;
begin

V

Pues la verdad es que nos han dado asi el algoritmo.
Falla justamente en el algoritmo (heapsort se llama) de ordenacion, pero lo tengo copiado exactamente igual que el del ejemplo que nos han dado :S.

bueno, un par de ends, pero ese no es el tema, con ellos tampoco funciona.

Si quito el procedure del heapsort el porgrama funciona, es el jodido heapsort lo que falla :S

Usuarios habituales

  • VSP
  • ValaV