Tömbök - bevezető

Tömbök (egydimenziós tömbök)

A tömb egy összetett homogén adatszerkezet, ami az elemeket egymás melletti memóriadarabokon tárolja.

Tömbök bejelentése C++-ban:

    alaptípus tömbnév[méret];

    pl. int t[100];

    |----|----|----| .... |----|
    (összesen 100 x 4B memória)

Elemek elérése:

    tömbnév[index] (lehet írni és olvasni is)

Az “index” egy szám, 0-tól sorszámozza az elemeket!

Pl. int t[100] esetén az elemek:

    t[0], t[1], t[2], ..., t[99]
1
2
    cout << t[0]; // kiírja az első (0 indexű) elemet
    t[99] = 2;   // beállítja az  utolsó elemet 2-re

Példa

Beolvasunk egy n hosszú (n≤100) sorozatot egy tömbbe, majd kiírjuk az elemeit:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;

int main()
{
    int t[100];
    int n;

    cin >> n;

    for (int i = 0; i < n; i++)
        cin >> t[i];

    for(int i = 0; i < n; i++)
        cout << t[i] << " ";

    return 0;
}

HF

Az input.txt fájlban adott n, majd egy n elemű sorozat. Olvassuk be az elemeket, majd írjuk ki fordított sorrendben! (n≤100)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    ifstream be("input.txt");

    int t[100];
    int n;
    be >> n;

    for (int i = 0; i < n; i++)
        be >> t[i];

    // t[0] t[1] t[2] ... t[n-2] t[n-1]
    /*
    for(int i = 0; i < n; i++)
        cout << t[i] << " ";
    */

    // t[n-1] t[n-2] ... t[1] t[0]
    for(int i = n-1; i >= 0; i--)
        cout << t[i] << " ";
    
    return 0;
}

Tömbök inicializálása

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;

int main()
{
    int t[100]; // nem tudjuk az elemek
                // kezdőértékét (nincsenek
                // inicializálva)

    int a[5] = {2,3,4,5,6};
        // 5 elemű, mindnek megadtuk a
        // kezdőértékét

    int b[100] = {10,20,30};
        // a b első három eleme 10, 20, 30
        // a többi elem nulla

    int c[100] = {};
        // c minden eleme 0

    return 0;
}

Indexelés 1-től

Ha 1-től akarjuk az elemeket sorszámozni, akkor megtehetjük egyszerűen kihagyva a 0-s indexet.

Pl.

1
2
    for (int i = 0; i < n; i++)
        cin >> t[i];

helyett:

1
2
    for (int i = 1; i <= n; i++)
        cin >> t[i];

Figyelem! A tömb ilyenkor 1-gyel nagyobb kapacitású kell legyen, mint amekkora sorozatot tárolni akarunk legfeljebb.