Sokszor találkozunk olyan feladatokkal, amikor nem egy tulajdonság alapján kell megszámolni valamit. Tegyük fel van egy számtömbünk, mely tudjuk, hogy a [0;10] intervallumból tartalmaz csak értékeket. Adjuk meg egyszerűen, hogy melyik szám hányszor szerepel a tömbben.
Ez egy megszámlálás feladat, de elég macerás lenne 11 külön for ciklussal megszámolni, és 11 változóban tárolni a darabszámokat.
Adott tehát a feladat: Írd ki, hogy melyik szám hányszor szerepel a tömbben!
Java forrás:
int[] tomb = { 2,5,4,0,10,1,4,8,5,2,8,1,9,10, 7,7,3,5,2,4,3,8,0,8,10,8,1,1,8, 10,7,7,3,8,3,6,6,7,5,8,9,3,9,3, 5,9,9,5,2,8,10,4,1,0,4,9,2,5,5 };
C++ forrás:
int tomb[] = { 2,5,4,0,10,1,4,8,5,2,8,1,9,10, 7,7,3,5,2,4,3,8,0,8,10,8,1,1,8, 10,7,7,3,8,3,6,6,7,5,8,9,3,9,3, 5,9,9,5,2,8,10,4,1,0,4,9,2,5,5 };
Most módosítsuk a tömböt, de a feladat ugyanaz: Írd ki, melyik érték hányszor szerepel a tömbben!
- A tömbben lévő számok intervalluma [5;20]
- A tömbben lévő számok intervalluma [-10;10]
- A tömbben lévő számok intervalluma [-30;-5]
Ennek a feladatnak a megoldását később közzé fogom tenni. Egyrészt ebből is sokat lehet tanulni, másrészt sok későbbi feladatban felhasználható az a trükk, melyet a megoldásban használok.
Maradjunk az első példánál, hogy a tömb a [0;10] intervallumból tartalmaz elemeket.
- Milyen számok nem szerepelnek a tömbben?
- Hányfajta érték nem szerepel a tömbben?
- Mely számok fordulnak elő legtöbbször a tömbben?
- Mely számok fordulnak elő legkevesebbszer a tömbben?
Ezekre a kérdésekre elég nehéz válaszolni, hiszen pontosan tudnom kell, hogy melyik hányszor szerepel a tömbben. Vagyis az alap számlálási probléma megoldása sok más feladatot is leegyszerűsít majd.
A feladat megoldása Java nyelven itt található.
Pingback: Java kiegészítő lecke – Többszörös megszámlálás |