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:=2p;
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.