Jak stworzyć tablicę 3 wymiarową typu dynamicznego ?

0

Witam, mam problem. Chcę stworzyć tablicę 3-wymiarową typu dynamicznego. Napisałem ale wyświetla mi się Error 22 Structure Too Large. Co jest nie tak ?

program fajny;
uses crt;
const ile=128;
var tab:array [1..ile,1..ile,1..ile] of integer;
a,b,c,ile1,ile2,ile3:integer;
begin
clrscr;
writeln('deklaracja tej tablicy');
write('podaj ilosc elementow: ');
readln(ile1);
write('podaj ilosc elementow: ');
readln(ile2);
write('podaj ilosc elementow: ');
readln(ile3);
for a:=1 to ile1 do
begin
for b:=1 to ile2 do
begin
for c:=1 to ile3 do
begin
write('podaj wartosc elementow: ',a,' ',b,' ',c,' : ');
readln(tab[a,b,c]);
end;
end;
end;
for a:=1 to ile1 do
begin
for b:=1 to ile2 do
begin
for c:=1 to ile3 do
begin
writeln('wartosc elementow wynosi: ',a,' ',b,' ',c,' ,tab[a,b,c]);
end;
end;
end;
readln;
end.

0

Niestety, nie tworzysz żadnej tablicy dynamicznej. Tworzysz za to trójwymiarową tablicę statyczną o rozmiarze 128x128x128, co daje w sumie ponad dwa miliony komórek. Zakładając, że typ Integer zajmuje dwa bajty, taka tablica zajmie około 4MB pamięci! Zapewne jeszcze używasz jakiegoś starego Turbo Pascala, więc się nie dziw, że się buntuje. W czasach świetności tego kompilatora takie rozmiary pamięci nie były dostępne dla programów.

Jeżeli chcesz tworzyć tablice dynamiczne, to przesiądź się na jakiś nowszy kompilator (Free Pascal, Delphi) i poczytaj o procedurze SetLength, np tutaj SetLength

0

Bzdura jakaś. W taki sposób tworzę tablice dynamiczne 1 i 2 wymiarowe a 3 już nie mogę i pytam się jak to zrobić a otrzymuję taką odpowiedź :/

0

Bzdury gadasz, w taki sposób tworzysz tablice statyczne (nie dynamicne).
Stare wersje Delphi nie akceptują tablic tak dużego rozmiaru, zmień swoje ile na 32 i wszystko pójdzie.

0

Ze starych wersji nie zaakceptuje zapewne tylko Delphi 1. Delphi 2 jak i nowsze nie akceptują dopiero, gdy zostanie przekroczony rozmiar 2 GB (Error: Data type too large: exceed 2 GB), więc Ile może wynosić nawet ok 800. Turbo Pascal natomiast akceptuje tylko do 31, sprawdziłem.

Natomiast otwartą kwestią jest nadal, jak przekonać autora wątku, że w taki sposób się nie tworzy tablic dynamicznych. Nie wiem, czy się nie obraził za nasze "herezje" (przynajmniej na mnie)

1 użytkowników online, w tym zalogowanych: 0, gości: 1