potrebuji najit chybu, delam nad timhle trochu dele a ne a ne ji najit.
Potrebuji udelat razeni ve spojovem seznamu a to jen pomoci presmerovani adres. Do packalu moc nedelam tak prosim o zhovivavost a velke nakopnuti
- Kód: Vybrat vše
program du2_sort;
{serazeni prvku ve strukture a to pouze presmerovanim addr}
uses crt;
type
thodnota=integer;
spoj= ^prvek;
prvek = record
hodnota:thodnota;
dalsi:spoj;
end;
procedure pridej(var celo,konec:spoj; hodnota:thodnota);
var
p:spoj;
begin
new(p);
p^.hodnota:=hodnota;
p^.dalsi:=nil;
if celo = nil then celo:=p
else konec^.dalsi:=p;
konec:=p;
end;
procedure tisk(celo:spoj);
begin
while celo <> nil do
begin
write(celo^.hodnota:5);
celo:=celo^.dalsi;
end;
writeln;
end;
procedure serad(var celo:spoj);
var
pom:spoj;
p1,p2:spoj;
vymena:boolean;
begin
vymena:=true;
while vymena do
begin
vymena:=false;
p1:=celo;
if p1<> nil then begin
p2:=p1;
p1:=p1^.dalsi;
end;
p2:=celo;
p1:=p2^.dalsi;
while p1 <> nil do
begin
if p2^.hodnota > p1^.hodnota then begin
pom:=p1^.dalsi;
p1^.dalsi:=p2^.dalsi;
p2^.dalsi:=pom;
vymena:=true;
end;
p2:=p1;
p1:=p1^.dalsi;
end;
end;
end;
procedure uvolni(celo:spoj);
var
pom:spoj;
begin
while celo <> nil do
begin
pom:=celo;
celo:=celo^.dalsi;
dispose(pom);
end;
end;
var
celo,konec:spoj;
i,n,m:integer;
begin
clrscr;
randomize;
write('Zadej pocet generovanych prvku: ');
readln(n);
write('Zadej maximalni hodnotu prvku: ');
readln(m);
celo:=nil;
for i:=1 to n do pridej(celo,konec,random(m)+1);
writeln('Vygenerovana: ');
tisk(celo);
writeln;
writeln('Serazena pomoci presmerovani adres:');
serad(celo);
tisk(celo);
uvolni(celo);
readln;
end.