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.
- “összetett”: több komponensű, több elemből áll
- “homogén”: minden eleme ugyanolyan típusú
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;
}
|
Feladat:
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
| #include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream bemenet("input.txt");
int tomb[100];
int n;
bemenet >> n;
for (int i = 0; i < n; i++) {
bemenet >> tomb[i];
}
for (int i = n-1; i >= 0; i--) {
cout << tomb[i] << " ";
}
cout << endl;
return 0;
}
|
Feladat:
Adott egy sorozat (max 1000 elemű). Írjuk ki a páratlan
elemeit a megjelenésük fordított sorrendjében.
Példa:
5
1 2 3 4 5 ---> 5 3 1
Megoldás: HF
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| #include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream bemenet("input.txt");
int tomb[100];
int n;
bemenet >> n;
for (int i = 0; i < n; i++) {
bemenet >> tomb[i];
}
for (int i = n-1; i >= 0; i--) {
if (tomb[i] % 2 != 0)
cout << tomb[i] << " ";
}
cout << endl;
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;
}
|
Számozási lehetőség 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. A nulla indexen továbbra is létezik egy elem, csak azt
nem használjuk.