Výsledky 1 až 9 z 9

Téma: [Pascal] Jak pouzit 2D pole jako parametr procedury?

  1. #1

    Standardní [Pascal] Jak pouzit 2D pole jako parametr procedury?

    Jde to? Chci procedurou otocit matici o 90 stupnu, priznavam, je to domaci ukol, mam to uz hotove, ale potrebuju to udelat jako proceduru, a tak troskotam na tomto problemu. Matici mam jako 2D pole a rad bych ji zadal jako parametr procedury.

    procedure otoc(m: array of integer);

    mi vyhazuje problem s druhym indexem, kdyz tam pak ruzne prirazuju

    a procedure otoc(m: array of array of integer);

    taky samozrejme nejde

    i kdyz to zadam jako var, pripadne const, taky to dela problemy - takze jak na to? Nemam tu zadnou rozumnou knizku, do ktery bych nahledl...

    Pouzivam Turbo Pascal 7
    Brum brum, nezavazne...

  2. #2
    Senior Member minceVIP Avatar uživatele sisi
    Založen
    24.02.2003
    Bydliště
    Auckland, NZ
    Příspěvky
    2 176
    Vliv
    281

    Standardní

    Nadefinuj to 2D pole ako typ (cez "type") alebo posielaj tej procedure nan pointer (co je lepsie, najma ak je to pole dost velke).
    Intel Core 2 Duo E6600 @ 3.2GHz (8 * 400MHz) @ 1.3V with Zalman CNPS9500 AT @ 1800RPM, ASUS P5B Deluxe/WiFi, 2x1GB Corsair Twin2X PC2-6400 DDRAM @ 400MHz (4-4-4-12) @ 2.1V, Leadtek 8800GT 512MB, WD Caviar SE16 250GB, Asus DRW-1608P3S, Creative SB Audigy Value, Logitech X-230 speakers, Enermax Liberty 400W, 2x120mm Thermaltake case fan @ 1800RPM, Thermaltake Aguila black case, HP LP2065 LCD, Logitech MX400

  3. #3

    Standardní

    Pres type jsem to zkousel, to slo, ja jen myslel, ze neco delam blbe... A pokud jde o ten pointer, zas tak moc v pascalu neumim
    Brum brum, nezavazne...

  4. #4

    Standardní

    Pointerum s emuzes vyhnout pokud to budes predavat pres var - vpodstate se jedna taky o ukazatel, tal Pascal ti ho skryje, takze pracujes s datovou strukturou jakoby byla lokalni.
    In a world without fences and walls, who needs Gates and Windows? | Nesnáším wide monitory.
    Workstation: Xeon E3-1275v5 :: Silentmaxx TwinBlock fanless :: Fujitsu D3417-B :: 32 GB ECC DDR4 :: Radeon Pro WX 2100 fanless :: Dell UP2715K :: Gentoo
    Server: Xeon E3-1245v6 :: Supermicro X11SSH-F :: 32 GB ECC DDR4 :: Aquantia 5GBase-T :: 36 TB storage :: Gentoo Hardened

  5. #5

    Standardní Re: [Pascal] Jak pouzit 2D pole jako parametr procedury?

    Citace Původně odeslal Fx
    procedure otoc(m: array of integer);
    To predsa nemoze fungovat. Aby si mohol adresovat cez druhy index, musel by poznat rozsah prveho indexu.
    A co tak to skusit adresovat jednorozmerne?
    zostava1 - zostava2 - zostava3 - zostava4
    TD2: You lunatic! There are women and children out there you could\'ve killed.

  6. #6
    Senior Member mince Avatar uživatele KtK
    Založen
    16.10.2002
    Bydliště
    Behind fuc*ing WorkTable Device (Praha zapad)
    Příspěvky
    1 709
    Vliv
    285

    Standardní

    Obavam se, ze dokud ta matice nebude NxN, (ctvercova), tak si s polem nepomuzes.. takze zacni studovat pointery a dynamicke seznamy. (neni to tak tezke, kdyz se naucis myslet "tim spravnym zpusobem")

    K te prvni podmince (NxN) mozna pribude i to, ze musi byt o zname velikosti-nejsem si jistej, jestli (turbo)pascal disponuje moznosti zjistit za behu velikost pole nebo dokonce jestli jde predat pole o nezname velikosti jako parametr (muze to v TP vubec existovat?).

    a vubec, udelej to jako objekt a mas to.. ten si bude jen pamatovat jestli je transponovanej nebo ne, a metoda dejprvek() pak podle toho sahne na spravne misto. prvky samozrejme jako 2D dyn. seznam.
    Parasite lost, AKA the Girlfriend Mission:The Socka Project sleeps, lets use (her :) Durex! 1GHz in some soltek stuff, Ati rage 128, etc.. (it\'s noisy)
    IMB Thinkpad R31: celer 1.2GHz, 384M RAM, 60GB 5400rpm hitachi, i810 8MB onboard (na praci to staci ;)
    [pro archivni ucely] janina overclockerska poradna (.tar.gz, 1.1MB, otevrete si index.html v browseru podporujicim javascript a frames)

  7. #7

    Standardní

    Dik obema, ale rozmer pole dopredu znam je, je to fakt jenom domaci ukol, netreba to prilis resit, myslel jsem, ze delam chybu v deklaraci, a ono to fakt jinak nez pres vlastni typ nejde (nebo jde, ale ne pres funkce, ktere teoreticky mame znat)
    Brum brum, nezavazne...

  8. #8

    Standardní

    Vlastny typ je najlepsie riesenie. Potom ho mozes pouzivat nejako takto:
    Kód:
    type mojtyp=array[1..M,1..N] of Real;
    procedure nieco(var m: mojtyp);
    begin
      m[1,5] := ...
    end;
    alebo ako beztypovy parameter - vtedy treba pouzit pretypovanie - takto:
    Kód:
    type mojtyp=array[1..M,1..N] of Real;
    procedure nieco(var m);
    begin
      mojtyp(m)[1,5] := ...
    end;
    BTW. V Delphi sa daju robit dynamicke polia - velmi pekna vec :
    Kód:
    var x: array of Integer;
    begin
      SetLength(x, 5);
    end.
    1: Asus P2B 1.10 • Celeron 1100@1364/1.8V • 512MB SDRAM • Samsung SP1213N+WD AC28400 • Toshiba XM-6402B+SD-M1212 • PowerColor AR2L Radeon 9100 64MB • 3C900-Combo • Bt848A • ASB-3940UA • AWE-64 • DTK PTP-3007 • VisionMaster 405 • Umax UC630 • Star LC24-200 Colour 2: PCPartner TXB820DS • Cyrix MII PR300/1.8V • 256MB SDRAM • 2xSamsung HD400LD+IT8212F • Accesstek CW4001 • LS-120 • Mystique 4MB • Millennium II 4MB • 3C509 • CMI8329A+Dream MIDI • ADI ProVista E44 • SyncMaster 203B Notebook: DTK FortisPro TOP-5A • P166MMX/1.8V • 80MB EDO • Hitachi 5K80 40GB • 12,1" TFT Router: A-Trend ATC-1425B • i486DX 50@33/5V • 48MB FPM • WD AC14300 • UMC UM9003F • HP PC LAN 16/TP+ Car: Mazda 323P BA • Z5 1489ccm, 65kW@5500rpm, 134Nm@4000rpm

  9. #9

    Standardní

    Rainbow, dik za pomoc, presne tak, jak byl dany ten prvni priklad, jsem to udelal uz v utery a mam to davno hotovy. Paklize tu nebude jeste nekdo neco doplnovat, myslim, ze je mozny to locknout.

    BTW Delphi mam kvuli mnohym takovymto vecem mnohem radsi, ale zatim se placame v pascalu, tak se to musi nejak prijmout, no...
    Brum brum, nezavazne...

Informace o tématu

Users Browsing this Thread

Toto téma si právě prohlíží 1 uživatelů. (0 registrovaných a 1 anonymních)

Pravidla přispívání

  • Nemůžete zakládat nová témata
  • Nemůžete zasílat odpovědi
  • Nemůžete přikládat přílohy
  • Nemůžete upravovat své příspěvky
  •