4. hét: vezérlési szerkezetek, kivételek

Czirkos Zoltán, Frey Balázs · 2024.10.09.

Gyakorlófeladatok az előadás anyagához kapcsolódóan.

1. Adatok kezelése, beolvasás, statisztika

Autópálya I.

Az M7-es autópályán traffipaxot szerelnek fel, amely a Balaton felé igyekvők gyorshajtásait rögzíti. A mérés több nap adatait is tartalmazza; egy autó adatait „óra:perc sebesség” formában. Pl. 12:45 198 azt jelenti, 12:45-kor valaki 198 km/h-val Az adatsor végét üres sor zárja. A program a hibás adatokat ne vegye figyelembe, a futás végén írj ki, hány hibás adat érkezett!

Készítsen a programod egy táblázatot arról, hogy melyik órában mennyivel ment a leggyorsabb autó! Ha egy adott órában nem volt gyorshajtás, az maradjon ki! A kimenet ilyen legyen:

14:00-14:59 -> 145 km/h
16:00-16:59 -> 167 km/h
1 hibás adat érkezett

(Tipp: a sebességek mind pozitív számok.)

Autópálya II.

Az M7 autópályán traffipax méri az autók sebességét. Minden mérésről három adatot ad: „óra:perc sebesség” A 140 km/h feletti sebességért 30 000 Ft a bírság, a 180 km/h felettiért 100 000 Ft. Az adatsor több nap adatait tartalmazza, és a végét üres sor zárja. A program a hibás adatokat ne vegye figyelembe!

Olvassa be a programod ezeket az adatokat, és írja ki, hogy a nap mely órájában mennyi az összes kirótt bírság! Példa kimenet:

12:00-12:59, 60000 Ft
13:00-13:59, 230000 Ft

Bliccelés I.

Egy busztársaság kíváncsi az utasok bliccelési szokásaira. Felviszik számítógépre az összes bírságolás időpontját. Arra kíváncsiak, a napok fél órás intervallumaiban hány jegy nélkül utazót kaptak el.

Az időpontok „óra:perc” formában érkeznek. Az adatsort üres sor zárja. Írja ki a programod, mely fél órás időszakban hány bliccelő volt! Pl.:

12:00-12:29 között 3 utas
12:30-12:59 között 5 utas

Bliccelés II.

Egy busztársaság szeretné tudni, a napok mely óráiban hány ellenőrt érdemes terepmunkára küldenie. Ehhez összesítik a bírságok adatait. Egy adat a következőkből áll: „óra:perc típus összeg”, ahol a típusnál h a helyszíni bírság, c pedig a csekk. „9:45 c 6000” jelentése: egy utas 9:45-kor csekket kapott 6000 forintról. A helyszíni bírságokat az ellenőrök begyűjtik; a csekkes bírságoknak átlagosan 80%-át tudják behajtani. (Vagyis egy 6000-es csekk a társaság számára átlagosan csak 4800-at ér.) Az adatsor végén egy üres sor szerepel.

Olvassa be a programod ezeket az adatokat! Készíts kimutatást arról, hogy mely napszakban mennyi a pótdíjakból a bevétel! Példa kimenet:

16:00-16:59, 14800 Ft
17:00-17:59, 12000 Ft

2. Véletlenszámok, játékok

Nincsenek egyformák

Készíts programot, amely N (maximum 100) darab véletlen számot állít elő, amelyek között nincsenek egyformák!

Hatoslottó

Készíts programot, amely egy hatoslottó sorsolást szimulál! (45 szám közül húz hatot)

Memóriajáték

Memóriajátékot írunk. 6x6 kártya van lefordítva a játékosok előtt, 18 pár, amelyek egyformák. A kártyákon betűk vannak, A, B, C, ... Írj egy programot, amelyik generál egy véletlenszerű leosztást! Természetesen egy betűnek pontosan kétszer kell szerepelnie (egy pár)!

Tipp

Ehhez érdemes előbb a listát úgy feltölteni, hogy sorrendben szerepelnek benne a kártyák, és utána összekeverni. Úgy nem kell mindig vizsgálni, hogy minden kártya pontosan kétszer szerepel-e benne. A lista megkeveréséhez minden elemet cserélj meg egy véletlenedikkel!

Master Mind

A Master Mind játékban egyik játékos kitalál egy feladványt, amely 4 tüskéből áll. A tüskék 6-féle színűek lehetnek. Lehetséges az is, hogy két vagy több tüske ugyanolyan színű, pl. piros, piros, zöld, kék. A másik játékos ezután megtippeli, mire gondolhatott az első. Az előbbi minden körben akképpen segít kitalálni a feladványt, hogy elárulja, a tippben hány olyan tüske van, amely a megfelelő színű és a megfelelő helyen is van (ezt feketékkel jelöli); és hány olyan, amely az előbbieken kívül még jó színű, de rossz helyen van (ezt pedig fehérekkel).

Pl. feladvány: oooo, tipp: oooo, segítség: ooo (a második piros, illetve a zöld és a sárga miatt).

Írj programot, amely feladványt ad a felhasználónak, és a leírt szabályok alapján segít neki kitalálni azt! A hat színt jelöld a programban az a…f betűkkel.

Tipp

Miután a felhasználó megadta a tippjét, a program használhat olyan algoritmust, amely hatására ez a beírt tipp elfelejtődik. Először a pozíció szerint is stimmelő tüskéket érdemes keresni, és az így megtalált egyezések a listából törölhetőek, hogy a második, pozíciót figyelembe már nem vevő keresés ne találja meg azokat újra.

Karakterek beolvasásával kapcsolatban lásd a fentebbi megjegyzéseket (pl. a kő, papír, olló játéknál.)

Sorbarakó játék

    1    2    3    4    5    6
  145   12    5   77  100   44

1. felcserelendo = 3
2. felcserelendo = 1
    1    2    3    4    5    6
    5   12  145   77  100   44

Írj programot, amely a felhasználótól bekért egész számokkal feltölt egy hatelemű listát! A program ezután keverje össze véletlenszerűen a számokat, majd írja ki ezeket az oldalt látható módon.

    1    2    3    4    5    6
    5   12   44   77  100  145

Gratulalok, nyertel!

A program ezután kérjen a felhasználótól két 1 és 6 közötti sorszámot, majd a program cserélje fel az ezekhez a sorszámokhoz tartozó értékeket, és írja ki ismét a számokat. Mindaddig ismételje a sorszámok bekérését és a cserét, míg a felhasználó nem rakta növekvő sorrendbe a számokat. Ha a felhasználó nem 1 és 6 közötti értékeket ad meg, adjon hibaüzenetet!