Pascal I.      Pascal II.      Delphi       Linkek     
Pascal I.
01. A program szerkez...
01. Gyakorló feladatok
02. Változók használata
02. Gyakorló feladatok
03. A FOR ciklus
03. Gyakorló feladatok
04. Egymásba ágyazo...
04. Gyakorló feladatok
05. Karakterláncok ...
05. Gyakorló feladatok
06. Az IF feltételvizsgálat
06. Gyakorló feladatok
07. A CASE elágazás
07. Gyakorló feladatok
08. A WHILE..DO ciklus
08. Gyakorló feladatok
09. A REPEAT..UNTIL ...
09. Gyakorló feladatok
10. Tömbök (ARRAY ...
10. Gyakorló feladatok
11. Műveletek tömbökkel
11. Gyakorló feladatok
12. Kétdimenziós töm...
12. Gyakorló feladatok
13. Műveletek kétdime...
13. Gyakorló feladatok
Programozás 1 (Pascal)
     
12 Kétdimenziós tömbök
   
  • kétdimenziós tömbök

      
     12.1 Kétdimenziós tömbök

     Az eddig használt egydimenziós tömbökön túl használhatunk többdimenziós tömböket is. Példaként nézzük meg, hogyan is képzelhetünk el egy 4x5 méretű kétdimenziós tömböt és hogyan hivatkozhatunk a tömb elemeire:

     Láthotjuk, hogy az egyes elemekre az elem sorának és oszlopának megadásával hivatkozhatunk, például a harmadik sor harmadik eleme: a[3,3].

     Az ábrán látható tömbben minden elem értéke 0. Mivel a többdimenziós tömbökkel egymásba ágyazott ciklusok segítségével dolgozunk (a külső ciklus adja meg a sorindexeket, a belső az oszlopindexeket), a tömb összes elemének 0-ra állítása is két ilyen egymásba ágyazott ciklus segítségével oldható meg:

program Pelda30a;
va
r a:array[1..4,1..5] of integer;
    i,j:integer;
begin
 for i:=1 to 4 do
  for j:=1 to 5 do a[i,j]:=0;
end.

     A tömb kiírása a képernyőre is két egymásba ágyazott ciklus segítségével lesz megoldva. A belső ciklus fog kiírni egy sort, a külső ciklus pedig megadja a sorok számát. Az előző példa kiírással kiegészítve:

program Pelda30b;
va
r a:array[1..4,1..5] of integer;
    i,j:integer;
begin
 for i:=1 to 4 do
  for j:=1 to 5 do a[i,j]:=0;
 for i:=1 to 4 do
  begin
  for j:=1 to 5 do write(a[i,j]:2);
  writeln;
  end;
end.

     Készítsünk most egy programot, amely kigenerálja egy 10x10-es kétdimenziós tömbbe a 10-es szorzótáblát, majd kiírja a képernyőre. A tömbünkbe tehát a következő értékeket szeretnénk kigenerálni:

     Ehhez a tömb mindegyik elemébe berakjuk az oszlopindexének és a sorindexének a szorzatát. Programunk így néz ki:

program Pelda31a;
var t:array[1..10,1..10] of integer;
    i,j:integer;
begin
 
{ kigenerálás... }
 for i:=1 to 10 do
  for j:=1 to 10 do t[i,j]:=i*j;
 { kiírás... }
 for i:=1 to 10 do
  begin
  for j:=1 to 10 do write(t[i,j]:4);
  writeln;
  end;
end.

     A fenti programban a tömb kigenerálását és kiírását elvégezhetjük ugyanabban a ciklusban is. Programunk ekkor így módosul:

program Pelda31b;
var t:array[1..10,1..10] of integer;
    i,j:integer;
begin
 
{ kigenerálás és kiírás ugyanabban a ciklusban }
 for i:=1 to 10 do
  begin
  for j:=1 to 10 do begin
                    t[i,j]:=i*j;
                    write(t[i,j]:4);
                    end;
  writeln;
  end;
end.

    

(C) 2004-2013, PaedDr. Végh Ladislav, Komárno, Szlovákia