Dodaj do ulubionych

Tablice w Pascalu

01.11.05, 20:18
Czy ktos wie jak zrobić tablicę w paskalu o wymiarach powiedzmy 1000 na 1000
bo mi wywala błąd jak wpiszę normalnie tzn:
tab:array [1..1000,1..1000] of integer;
Tylko proszę jak do początkującego programisty.
Edytor zaawansowany
  • alsor 02.11.05, 00:25
    Robisz w 16 bitowym paskalu a tam jest ograniczenie rozmiaru tablic
    do 64KB. 1000*1000*2 to prawie 2000KB.
    Podziel tą tablicę na kawałki, albo najlepiej przerzuć się na delphi lub inny
    32 bitowy system.
  • ferdziu 07.11.05, 13:50
    A w C++ uda mi sie coś takiego zrobić?
  • alsor 07.11.05, 17:51
    Pewnie tak, ale takich wielkich tablic nigdy się nie deklaruje,
    zawsze jest inny i lepszy sposób na załatwianie takich rzeczy.
  • mx-5 11.11.05, 22:37
    We Free Pascalu taki motyw przejdzie - on jest 32 bitowy ;)
    Takie tablice owszem deklaruje sie , ale w celach raczej naukowych - fizycy
    operuja na macierzach milion x milion - tysiac to dla nich pryszcz :D
    Jak sie ma Cray`e w piwnicach hehe ...
    A tak poza tym to faktycznie w typowych zastosowaniach tablica dwuwymiarowa
    1000 x 1000 to straszne marnotrastow pamieci.Czepiajac sie tak juz to staraj
    sie pisac tak:

    const
    rozmiar=1000;
    type
    index=1..rozmiar;
    tablica=array[index,index];
    var
    a:tablica;

    To bardzo dobry nawyk- jesli potem przyjdzie Ci ochota zmienic 1000 na np:10
    to nie przeprawiasz calego programu tylko zmieniasz rozmiar stalej ;]
    Pozdr!
  • alsor 12.11.05, 17:59
    milion razy milion = trylion - ciekaw jestem kto wpisuje ten trylion
    współczynników.
    Zakładając 4 bajtowe elementy mamy:
    10^12*4 = 10^9*4000 - jest to prawie 4000GB.

    Jeżeli ta macierz zawiera mniej niż 99.9% zer to wątpię w to,
    aby istniał taki komputer, który coś tam policzy w sensownym czasie.
    Jedyna szansa to rozdzielenie obliczeń na tysiące komputerów - ale i to marnie
    widzę.

    Dla układu równań liniowych można policzyć czas obliczeń:
    liczba operacji wynosi ponad: n^3/3, dla n = milion daje to 10^18/3,
    jedna operacja (tu jest to mnożenie i dodawanie oraz odczyt i zapis do pamięci)
    niech trwa 10^-9s (miliard na sekundę - pentium 4GHz ma około 10 razy mniej),
    wtedy: t = 10^18/3*10^-9 = 10^9/3s = 10.5 lat.
  • mx-5 12.11.05, 22:00
    Tak wlasnie jest - wykladowca nam opowiadal ;]
    Na UW maja wlasnie pare Cray`ow ( kosztowaly podobno kupe szmalu ) i one
    obliczaja takie macierze - oczywiscie milion x milion na milion zdarza sie
    rzadko, ale takie 100 000 x 100 000 to czesto i sie liczy pare miesiecy ;]]
    Ale sa to naprawde naukowe zastosowania ;]
    Wogole to maja tam jeszcze jakis reaktor czasteczek starch sie bac co sie tam
    czai jeszcze w tych podziemiach UW :>>

Popularne wątki

Nie pamiętasz hasła

lub ?

 

Nie masz jeszcze konta? Zarejestruj się

Nakarm Pajacyka