Minta vizsga

Czirkos Zoltán · 2019.02.27.

Minta vizsga, néhány feladattal.

Minta vizsga. Tudnivalók a feladatsor felhasználásával kapcsolatban: lásd itt. Ez csak minta. Nem fedi le a teljes tananyagot; nem jelent semmi olyasmit, hogy „csak ez lehet”, vagy „csak ilyen lehet”, esetleg „más nem lesz”.

1. feladat: Ajándék vagy virgács?

A mikulás szeretné megtudni mindegyik gyerekről, hogy jó volt vagy rossz. Ha jó volt, ajándékot visz neki, ha rossz, akkor virgácsot küld a krampusszal. A gyerekekről szóló szöveg vigyorgó hangulatjelet :) tartalmaz minden jótett leírása után, és szomorút :( minden csínytevés után. Például segített főzni :) és rendetlenséget hagyott a szobájában :(.

Írj programot, amelyik karakterenként olvassa a bemenetét, és állapotgépes szemléletű feldolgozással megszámlálja, hány vigyorgó :) és szomorú :( jel volt benne! Végül írja ki, hogy ajándék jár (több jótett, mint csínytevés), vagy virgács (a jótett kevesebb), esetleg nem lehet eldönteni a történetből, ha ugyanannyi :) volt, mint :(. Másféle hangulatjel nem lesz a szövegben.

A programod legyen állapotgépes, sztringkezelés nem lehet benne (input, readline, split stb.) Rajzolj állapottáblát vagy állapotátmeneti gráfot, az sokat segít!

2. feladat: Valutaváltó

A mikulás az utolsó pillanatban kapcsol, hogy nem szerzett elég ajándékot. Ezért betér egy valutaváltóba, hogy pénzt szerezhessen újabb játékokra.

Írj függvényt, mely a paraméterként megadott nevű fájlból beolvassa az aktuális vételi és eladási árfolyamokat, s ezeket dict típusú tárolóban visszaadja! Ez a valuta kódjával indexelhető, és vétel, eladás adattagokat használó objektumokat kell tartalmazzon. A fájl minden sora három mezőből áll, melyeket szóköz karakter választ el: valutakód, vételi árfolyam, eladási árfolyam. Példa lent látható. Definiáld az ehhez szükséges Árfolyam osztályt is!

Írj programot, mely bemutatja a függvény és az adatszerkezet használatát. A program írja ki a bemenetről bekért típusú és mennyiségű valuta vételi és eladási értékét – lásd a lentebbi példát.

USD  278.51  292.21
GBP  350.00  369.67
EUR  315.51  331.69
CHF  278.58  294.99
Váltani kívánt valuta kódja: EUR
Váltani kívánt valuta mennyisége: 100

31551 forintért vesszük, 33169 forintért adjuk.

3. feladat: Karambol

A mikulás a szánjával nekihajtott egy fának. Az ajándékok szétszóródtak a fa ágain. Hogy mentse a menthetőt, felmászik a fára, végigjárja az összes ágát, az ott található ajándékokat összegyűjti, és mindet a fa gyökeréhez cipeli. A fa történetesen épp bináris fa, amelynek csomópontjai az oda került ajándékok darabszámát tárolják.

  • Definiáld az osztályt, amely ilyen fa felépítésére alkalmas! Írj függvényt, amely kilistázza a csomópontokban található ajándékok számát! A sorrend most lényegtelen.
  • Írj függvényt, amelyik a fa gyökerébe teszi az elemek összegét, az összes többi csomópontot pedig nullázza! (Több megoldás elképzelhető, ha gondolod, írj segédfüggvényeket!)
  • Egy példa kódrészletben hozz létre fa gyökerét tároló változót (egyetlen csomópontot; nagyobb fát építeni nem kell), gyűjtsd az ajándékokat a gyökerébe!

4. feladat: Térkép

A mikulás ajándékokat visz végtelen, kétdimenziós rácson elhelyezkedő házakba. Kezdetben beadja az ajándékot a kiindulási pozícióban lévő házba, utána pedig rádión kapja az utasításokat, merre kell tovább mennie: északra (^, kalap), délre (v, kis v betű), keletre vagy nyugatra (>, <, kacsacsőrök). Minden lépés után bead egy ajándékot az új pozícióban lévő házba.

A gond csak az, hogy az utasítások kicsit össze-vissza vannak, ezért némely háznál többször is jár. Kérdés az, hogy hány házba vitt legalább egy ajándékot. Például:

  • > két házba; egyik a kiindulási pozíció (origó, 0,0), másik pedig az attól keletre lévő (0,1).
  • ^>v< négy házba; a kiinduló házban így két ajándékot kapnak.
  • ^v^v^v^v^v rengeteg ajándékot kap két szerencsés gyerek.

Olvasd be a bemenetről az irányokat, és oldd meg ezt egy halmazzal! A halmazba (set) a koordinátákat kell tenni, amelyeket legegyszerűbben egy tuple-ben tárolhatsz, pl. (5,-9). A halmaz számossága (mérete) a válasz.