fel
le

Függvények, listák III.

#1   Master mind játék

Egy 4 elemű listába helyezzünk el random számokat [1,4] intervallumból, ismétlődés lehet. A felhasználó feladata kitalálni milyen számok szerepelnek a listában. Beírja a tippjét, s mi megadjuk milyen a találati arány (kék pontot ér, ha olyan számot ír be, amely szerepel a vektorban de nem az adott pozíción, zöld pontot, ha az az adott pozíción szerepel). Egy tippre maximum 4 pontot adhatunk. A felhasználó kitalálta a megoldást, ha 4 zöld pontot kapna. Addig kérjünk be tippeket, míg ki nem találja a megoldást, vagy 4 db 0-t nem ír be (kilépés).

#2   lista fura feltöltése

Egy listába helyezzünk el random számokat oly módon, hogy billentyűzetről bekérünk számokat. Ha a kezelő azt írja be, hogy +3 akkor 3 db [10..30] közötti számot tegyünk a listához. Ha pl -4 –t ír be, akkor 4 db [-30..-10] közötti számot tegyünk a listába. Ha a kezelő 0-t ír be, akkor fejezzük be a listába számok elhelyezését. A végén írassuk ki a számokat a képernyő, adjuk meg hogy melyek azok a [10..30] közötti számo, amelyek nem szerepelnek sem pozitív, sem negatív alakjukban a listában (vagyis ha pl. sem a +14 , sem a -14 nincs benne, akkor a 14 egy ilyen szám). Lehet, hogy nem lesz ilyen szám, akkor írjuk ki, hogy „nincs ilyen szám”.

#3   Lista egyensúlyozás

Egy listába helyezzünk el billentyűzetről bekért számokat, amíg 5 darab -10 közötti negatív szám nem kerül bele. Ezek után adjunk a listához még random [10,30] számokat, amíg minden [-30,-10] negatív számhoz lesz a listában abszolút értékbeli pár (ugyanaz a szám benne lesz pozitív előjellel is). A listát írassuk ki a képernyőre.

#4   ordító rabbik

Két rabbi ordítva veszekszik egymással. A hangerejüket egy 1..100 skálán tudjuk mérni (100 a maximális hangerő). Másodpercenként veszünk mintát mindkét rabbi hangerejéről. Kettő darab 300 elemű listában rögzítjük az 5 perces veszekedésük során produkált hangerőt (az első listában Jákob, a második tömbben Zakariás rabbi hangerői szerepelnek). Adott másodpercben az a rabbi győz, akinek abban a másodpercben nagyobb volt a hangereje. A teljes 5 perces vitát az nyeri, aki menet közben többször nyert. A 300-as listákat töltsük fel véletlen számokkal 80..100 értékekkel, majd határozzuk meg a veszekedés győztesét. Ügyeljünk arra, hogy döntetlen is lehet az eredmény!

#5   libavásár

Egy időben minden nap kimentünk a piacra, libákat adni/venni. Minden nap végén tudjuk, hogy aznap több libát adtunk-e el, mint vettünk (vagy sem). A nap végi +3 érték jelentse, hogy 3 libával többünk van, mint a nap elején volt, a -5 érték jelentse, hogy 5-el kevesebb libával zártuk a napot. Tároljuk el 30 napnyi üzletelésünk eredményéit egy listában (pozitív és negatív számok). A listabeli értékeket véletlen számokkal töltsük fel -20,+10 intervallumból. Kérjük be billentyűzetről, hány libával kezdtük az üzletelést az elején, majd határozzuk meg volt-e olyan nap, amikor mínuszban zártuk a liba-üzletet, és másnap is tovább csökkent a libáink száma, ahelyett hogy vettünk volna? "Volt ilyen eset igen/nem".

#6   lövöldözés

Az amcsi C kategóriás filmben egy gazfickó és egy zsaru lövi egymást az utca két oldaláról. Egy lista elemei azt tárolják, hogy a zsarut alakító színész elmúlt 1 másodpercben hány lövést adott le. A zsaru csak akkor cserél tárat, ha a tárban már kevesebb mint 10 töltény van. A tárcsere 3 másodpercig tart (addig nem lő). Egy tárban 20 golyó van. Maximum 5 tár van nála (és a fegyver induláskor fel van töltve). Töltsünk fel egy 1000 elemű listát véletlen értékekkel az alábbi módon:

  • sorsoljunk egy véletlen számot 1..100 között (X)
  • ha X kisebb, mint 80 akkor nem lőttek ebben a másodpercben
  • ha X nagyobb, mint 80, akkor ebben a másodpercben lőttek valamennyit, sorsoljuk ki 1..3 között, hogy mennyit lőttek

Határozzuk meg, hogy a 1000-es listában valós lövöldözés hangsorozatát tartalmazza-e (vagyis nem fordult-e elő, hogy a tárban már nem volt töltény, mikor lőtt vele a színész). Eközben írjuk ki a képernyőre, mely másodpercekben cserélhetett tárat a színész, és hány teli tár van még nála. Ügyeljünk arra, hogy egy 10 másodperces szünet nem 3 tárcsere!

Hernyák Zoltán
2013-03-16 18:32:27