Sākumlapa
"Pirmā web lapa"
HTML
CSS
Citi materiāli
Ceļošana - kalni
Lazarus (Delphi)
Ievads
Lazarus vide
Pirmā programma
Mainīgie
Globālie mainīgie
Teksta mainīgie
Veselie mainīgie
Decimālie mainīgie
Zarošanās (If)
Cikli - For
Cikls - While
Gadījuma skaitļi
Masīvi_1
Masīvi_2
Konsole
Darbs ar datnēm
Kārtošana (ievads)
Kārto (Burbulis)
Meklēšana (lineāri)
Vēl iesaku:
Lai gan Delphi valodā tiek atbalstīts masīvs ar neierobežotu dimensiju skaitu, mēs aplūkosim tikai divu dimensiju masīvu.
Ja atceramies masīva līdzību ar tabulu, tad vienas dimensijas masīvs ir kā tabula ar vienu rindu – līdz ar to, masīvu definējot, tika norādīts tikai kolonnu jeb šūnu skaits tajā (norādīt uz vienu esošo rindu nav nekādas nepieciešamības). Divu dimensiju masīvs, savukārt, ir salīdzināms ar jau vairāku rindu tabulu, piemēram:
| 1 | 2 | 3 | 4 |
| 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 |
To definē šādi:
var
M: array [1..3,1..4] of byte;
kur:
Ievērojiet, ka rindas no kolonnām atdala ar komatu!
Lai nolasītu vai piešķirtu vērtību kādam masīva elementam, ir jāuzrāda tā rindas un kolonnas indekss (līdzīgi, kā spēlējot spēli "kartupelis" vai "kuģīši"):
| x:=M[1,2]; | {mainīgais "x" iegūst masīva pirmās rindas otrās kolonnas elementa vērtību, t.i., "2"} |
| y:=M[3,2]; | {mainīgais "y" iegūst masīva trešās rindas otrās kolonnas elementa vērtību, t.i., "10"} |
| M[3,4]:=12; | {trešās rindas ceturtās kolonnas elementam piešķir vērtību "12", t.i., ieraksta masīvā} |
Ja vienas dimensijas masīva aizpildīšanai vai nolasīšanai nereti lietoja ciklu, tad divu dimensiju masīvam parasti lieto divus ciklus (ciklu ciklā), kur viens padod rindas kārtas numuru (indeksu), bet otrs - kolonnas.
Uzdevums:
Nospiežot "OK" pogu, aizpildīt augstākminēto divdimensiju masīvu ar piemērā redzamajām vērtībām un pēc tam to secīgi izvadīt (piemēram, lābelī).
procedure TForm1.Button1Click(Sender: TObject);
var M: array [1..3,1..4] of byte;
r,k,v :byte;
izv :string;
begin
{aizpildām}
| v:=1; | {mainīgā sākuma vērtība} |
| for r:=1 to 3 do | {sākas 1.cikls. Secīgi tiek padots rindas indekss jeb numurs} |
| for k:=1 to 4 do | {sākas 2.cikls. Secīgi tiek padots kolonnas indekss} |
| begin | |
| M[r,k]:=v; | {atbilstošajā masīva elementā tiek ierakstīta "v" vērtība} |
| v:=v+1; | {pēc tam "v" vērtība palielinās par 1} |
| end; | {cikla robežas} |
| {izvadām tieši tāpat!} | |
| izv:=' '; | {mainīgā sākuma vērtība būs tukšums} |
| for r:=1 to 3 do | |
| for k:=1 to 4 do | |
| izv:=izv+inttostr(M[r,k])+' '; | {mainīgais secīgi uzkrāj masīva vērtības, starp tām ievadot tukšumu} |
| label1.caption:=izv; | {izvade lābelī} |
| end; |
Paskaidrojums par masīva aizpildīšanas daļu:
Vispirms ievērosim cikla robežas - tas sākas ar pirmo "for" un beidzas ar lokālo "end". Cikla ideja bija, ka darbības nemitīgi atkārtojas pa apli, līdz cikla nosacījums netiek izsmelts. Tādējādi izpildāmo darbību secība ir sekojoša (LIKSIM MAINĪGO VIETĀ SKAITĻUS!!):
Autortiesības © 2005-2011, kasis.lv. Visas tiesības aizsargātas.