Witam, czy wie ktos jak napisac procedure do tworzenia macierzy o dowolnych rozmiarach przy uzyciu listy jednokierunkowej? bede wdziwczny za wszelkie wskazowki.
0
0
W takim podejściu robisz sobie listę list. Jak chcesz powiedzmy odwołać się do jakiegoś elementu, to przesuwasz się w pierwszej liście o jeden wymiar, a następnie w wewnętrznej o <ort>drógi </ort>wymiar. I wsio.
EDIT:
Na dysku znalazłem "programik" którym udowadniałem kiedyś, że w paskalu też można robić dynamiczne tablice (tutaj typu byte), tyle że na około ;P
program test;
procedure macierz(n,m:byte);
var
p:pointer;
a,b:byte;
begin
getmem(p,n*m);
for a:=0 to (n*m)-1 do
mem[seg(p^):ofs(p^)+a]:=a;
for a:=0 to n-1 do begin
for b:=0 to m-1 do
write(mem[seg(p^):ofs(p^)+a*m+b],' ');
writeln;
end;
freemem(p,n*m);
end;
var
n,m:byte;
begin
write('podaj rozmiary macierzy: ');
readln(n,m);
macierz(n,m);
readln;
end.