fel
le

Vektorok és FOR

A vektorok deklarálása, feltöltés, kiírás, műveletek vektorokkal, FOR ciklusok segítségével (random számgenerálás gyakorlása)

A megoldások során tartsuk szem előtt azt az elvet, hogy FOR ciklust akkor alkalmazunk, ha a ciklusmag végrehajtásának száma előre ismert. Ha ez nem teljesül, akkor alkalmazzunk WHILE ciklust.

A korábban említett feladatok, amelyek több számot is bekérnek és feldolgoznak - átalakíthatóak vektoros megoldásra. A vektoros feldolgozás előnye, hogy a bekért számokat eltároljuk, így nem csak egyszer, de többször is feldolgozásra kerülhetnek.

#1   Átlag fölöttiek

Kérjük be az osztály 10 tanulójának matematika érdemjegyeit. A számok alapján határozzuk meg az osztályátlagot, majd határozzuk meg hány diák jegye volt magasabb mint az átlag.

#2   Különböző számok

Kérjük be 5 db számot billentyűzetről, de csak különbözőeket fogadhatunk el. Amennyiben a bevitel során olyan számot írna be, amely már szerepelt volna, úgy figyelmeztessük, és ezen számot írja be újra (amíg az különböző nem lesz).

#3   Lottó számok

Generáljunk 5 db lottó számot. Ügyeljünk arra, hogy ismétlődés ne fordulhasson elő!

#4   Minimum és maximum

Töltsünk fel 1..100 közötti véletlen számokkal egy 20 elemű vektort. Írjuk ki a vektor elemeit a képernyőre, majd határozzuk meg és írjuk ki a legkisebb és legnagyobb elem értékét is a képernyőre.

#5   Van-e ismétlődés

Kérjünk be (vagy töltsünk fel véletlenszámokkal) egy vektort számokkal, és határozzuk meg, van-e benne olyan elem, amely ismétlődik, vagyis többször is szerepel.

#6   Legtöbbet előforduló elem

Kérjünk be (vagy töltsünk fel véletlenszámokkal) egy vektort 1..10 közötti számokkal, majd határozzuk meg melyik az az érték, amely legtöbbször szerepel a tömbben.

#7   Magasságmérés

5 km-enként megmértük a felszín tengerszint feletti magasságát. (összesen N mérést végeztünk) A méréseket szárazföld felett kezdtük és fejeztük be. Ott van tenger, ahol a mérés eredménye 0 (víz), másutt nagyobb mint 0 (szárazföld). Határozzuk meg, van-e ezen a tengerszakaszon sziget!

Lehetséges kiegészítések:

  • hány szigeten jártunk?
  • Adjuk meg azt a szigetet (kezdő index), ahol a legmagasabb csúcs van!
  • Írjuk ki a tengerszakaszok hosszát!
  • Állapítsuk meg hogy van-e két egyforma szélességű (hosszú) sziget!
#8   Chuck Norris

Chuck Norris egy erdei ösvényen sétálva azt vette észre, hogy előtte pocsolyák, és száraz területek vannak. Először arra gondolt, hogy híres pörgőrúgásával szelet kavar, és kiszárítja a pocsolyákat - de aztán az jutott eszébe hogy akár át is ugorhatná azokat. Mivel nagyon ügyes, ezért három (általánosan N db) szomszédos pocsolyán is keresztül tud ugrani, de négy (N+1 db) szomszédos pocsolya esetén már vizes lesz a lába.

Az erdei ösvényt ábrázoljuk egy vektorban az alábbi módon:

  • az ösvény egyes pontjait jellemezze egy szám az alábbi módon
    • 0 képviseli a száraz részt
    • 1 képviseli a pocsolyát
  • az ösvény legyen 60 egység hosszú, tehát 60 számra van szükségünk
  • az ösvény első és utolsó egysége mindenképpen száraz
  • a középső elemek 70% valószínűséggel szárazak, egyébként pocsolyák

Töltsünk fel egy 60 elemű vektort a fentiek szerint számokkal, majd a vektort jelenítsük meg a képernyőn egy sorban. A jobb átláthatóság miatt a 0-t egy '.', a vizet egy '#' karakter jellemezze.

Határozzuk meg, hogy amennyiben Chuck képes három szomszédos pocsolyát átugrani, úgy a konkrét ösvény ismeretében képes-e száraz lábbal átjutni az ösvény túloldalára.

#9   Duna vízállása

Legyen egy '''v''' listánk, amely 365 elemű, és a Duna vízállás-értékeit tartalmazza egy évre visszamenőleg. Legyen egy '''ido''' listánk, amely valahány időintervallum kezdetét és végét tartalmazza a következőképpen - ha a lista az alábbi módon néz ki : 0,12,15,23,32,45,...,364 az azt jelenti, hogy az első időintervallum a [0,12] nap, a második a [12,15] nap, a harmadik a [12,15] nap, stb.. A lista legelső eleme konkrétan a 0 kell legyen, az utolsó pedig biztosan legyen a 364.

Az alábbi kérdésekre keressük a választ:

  • a, melyik (hányadik) időintervallumba esik a Duna legkisebb vízállása
  • b, melyik (hányadik) időintervallumba esik a Duna azon időszakra eső legkisebb vízállása

Az ''a'' kérdés megválaszolásához ismernünk kell a vízállások minimumát. Ez a minimum többször is előfordulhat a listánkban, ezért az ''a'' kérdésre elképzelhető hogy nem egy konkrét intervallum sorszám a válasz, hanem több ilyen intervallum azonosítója.

Másik szélsőséges esetben egy konkrét intervallumon belül többször is előfordul a minimális érték - mely estben ezen intervallum azonosítóját továbbra is csak egyszer kell megadni.

Hasonló a probléma az átlagos minimumokkal is. Először meg kell határozni az időintervallumokba eső vízállások minimumát. Majd meg kell határozni, hogy ezen minimum-érték melyik időintervallumhoz tartozik. Szintén előfordulhat, hogy több intervallumban is ugyanennyi a minimális érték.

#10   Kettes számrendszer átváltó

Kérjünk be egy pozitív egész számot, majd határozzuk meg a kettes számrendszerbeli alakját. Határozzuk meg hány 1-es és hány 0 alkotja ezen alakot.

#11   Számrendszer átváltó

Kérjünk be egy egész számot, és egy számrendszerbeli alapszámot (2..16). Írjuk ki az adott egész szám ezen számrendszerbeli alakját.

#12   Nagyobbak

Egy random feltöltésű tömbben határozzuk meg, hogy van-e olyan szám, amely mindkét szomszédjánál nagyobb.

#13   Összegzés

Egy 30 elemű vektort töltsünk fel véletlen értékekkel a [10,80] intervallumból. Írassuk ki az elemeket egymástól vesszővel elválasztva. Kérjünk be egy A és B számot, határozzuk meg hány vektorbeli elem szerepel az [A,B] intervallumból (pl. hány szám van a [30,50] intervallumból).

Hernyák Zoltán
2013-03-16 15:20:03