07. Tömbök kezelése

Default book
A tömböket úgy tudjuk egyszerűen elképzelni, hogy dobozokat rakunk egymás mellé, a dobozokat megszámozzuk. A dobozok sorozatát nevezzük tömbnek. Az egyes dobozokat a tömb elemeinek nevezzük. Ha egy dobozra hivatkozni akarunk, akkor megnevezzük a sorszámát, más néven az indexét.

Egy dimenziós tömbök

A dobozok egy sorban vannak. Egy sorszámmal tudunk hivatkozni valamelyikre. A sorszámozás mindig 0-val kezdődik.

Két dimenziós tömbök

Amikor létrehozom a tömböt, akkor megmondom a programnak, hogy egy, két vagy több dimenziós tömböt akarok létrehozni és megmondom, hogy a tömb elemeibe milyen típusú adatokat tehetek. Az adatok típusa kötött, a korábban felsorolt adatok bármelyike lehet, de egy tömbben mindig csak azonos típusú adatok lehetnek.

Ebben a példában 10 elemű tömböt hozok létre. A tömb elemek 0-tól 9-ig sorszámozhatók (indexelhetők). A tömb neve t.

int[] t = new int[10];

A tömb 5-ös sorszámú eleme a t[5], mivel 0-tól sorszámozzuk a tömböt, ezért ez az elem valójában a 6. a sorban.

Az alábbi példában két dimenziós tömböt hozok létre. A tömb elemei stringek lehetnek:

string[] s = new string[5,10];

Megállapodás szerint az első szám a sorok száma, a második az oszlopok száma, tehát 5 soros, 10 oszlopos tömböt hoztam létre. a példában szereplő tömb neve s. A 3. sor 4. eleme pedig így érhető el: s[3,4].

A tömbök kezelése szoros összefüggésben van a ciklus programszerkezetekkel. Ha egy egy dimenziós tömb elemeit akarjuk feltölteni adatokkal vagy kiíratni, akkor az alábbi kódot lehet használni:

//Az alábbi pás ros létrehoz egy 100 elemű egész számokból álló tömböt és feltölti páros számokkal
int[] t = new int[100];
int i=0;
for (i = 0; i < 100; i++){
   t[i] = 2*i+2;
}
//Az alábbi pár sor pedig fordított sorrendben kiírja a tömb elemeket
for(i=99; i>=0; i--){
    Console.WriteLine( i );
}

Ha két dimenziós tömbünk van, akkor végig kell menni a soronként az oszlopokon, majd sort emelni, azaz két db. egymásba ágyazott ciklust kell hasznáálnunk. ​

//Az alábbi pár sor létrehoz egy 5x10-es tömböt. A tömb elemeit a sor és oszlopok szorzatával tölti fel.
int[] tt = new int[5,10];
int i = 0;
int j = 0;
for (i = 0; i < 5; i++){
   for(j = 0; j < 10; j++){
      t[i,j] = 2*i+2;
   }
}
//Az alábbi pár sor pedig kiírja a tömb elemeket, egymás mellé a sorokat és a sorok után sort emel.
for(i=0; i<5; i--){
    for ( j = 0; j<10; j++){
       Console.Write( tt[i,j] + " ");
    }
    Console.WriteLine();
}