. feladat: Rendezés (2 pont) A Comenius Logo egyik játékprogramjában békákat kell sorba rakni úgy, hogy lépésenként kijelölhetjük, hogy melyik béka ugorjon. gorni vagy csak szomszédos zsombékra lehet, vagy egy békát lehet átugrani. Kezdetben a jobboldali zsombék üres, s a sorba rakás után bármelyik (akár középen is) lehet üres. Add meg, hogy minimálisan hány ugrás szükséges ahhoz, hogy az alábbi ábrán látható békákat sorbarendezzük! A. D. B. E. C. Példa: Kezdőállapot:. lépés: 2. lépés: tolsó lépés: A. lépés 4 pont B. 2 lépés 4 pont C. 7 lépés 4 pont D. 5 lépés 4 pont E. 9 lépés 4 pont 2. feladat: Szűrés (2 pont) Az alábbi három algoritmus az egyetlen sort tartalmazó X szöveges változó karakterei közül bizonyosakat a Z szöveges változóba ír. Add meg, hogy melyik eljárás milyen elemeket, illetve milyen elemsorozatokat nem másol át a Z változóba!
Első: Második: Z:='' Z:=''; L:=igaz Ciklus i=-től hossz(x)-ig Ciklus i=-től hossz(x)-ig Ha X[i] ' ' akkor Z:=Z+X[i] Ha X[i] ' ' vagy L akkor Z:=Z+X[i] L:=(X[i] ' ') Harmadik: Z:=''; L:=hamis Ciklus i=-től hossz(x)-ig Ha X[i] ' ' vagy L akkor Z:=Z+X[i] L:=(X[i] ' ') Első: kihagyja az összes szóközt Második: egymás melletti szóközökből pontosan egyet hagy meg Harmadik: egymás melletti szóközökből pontosan egyet hagy meg, de ha a sor elején szóközök vannak, azokat mind elhagyja 3. feladat: Áramkör (2 pont) + * Egy áramkör kétféle alapelemből épül fel. A vezetékek elágazásait festett körrel, bemeneteit és kimeneteit pedig üres körrel jelöljük. Y Z Z Y Minden vezetéken vagy értékű + * + jel van. A + jelű alapelem a két bemenete összegét adja modulo 2, a * jelű pedig a két bemenetét összeszorozza. Az alapelemekből felépítettük a mellékelt * * * + hálózatot. A. Határozd meg a hálózat,, 2 kimeneteit, ha a bemenetei értéke: + A. Y =, Y =, Z =, Z =, A2. Y =, Y =, Z =, Z =, A3. Y =, Y =, Z =, Z =, A4. Y =, Y =, Z =, Z =. + 2 B. Fogalmazd meg általánosan, hogyan függ az kimenet az Y,Z bemenettől! A. =, =, 2 = ++ pont A2. =, =, 2 = ++ pont A3. =, =, 2 = ++ pont A4. =, =, 2 = ++ pont B. Az áramkör kétbites összeadó, azaz 8 pont =(Y +Z ) mod 2, AT =(Y +Z ) div 2 2
=(Y +Z +AT ) mod 2, AT =(Y +Z +AT ) div 2 2 =AT 4. feladat: Címletezés (2 pont) Egy pénztárban hatféle bankjegyet (címletet) kezelnek. Az alábbi címletező algoritmus, szándékunk szerint, meghatározza, hogy a P összeg hogyan fizethető ki a lehető legkevesebb bankjeggyel. Az eredményt a DB vektor tartalmazza. Minden címletből korlátlan mennyiség használható fel. Címletezés(P,C,DB): K:=6; DB:=(,,,,,) Ciklus amíg P> Ciklus amíg P C(K) DB(K):=DB(K)+; P:=P-C(K) K:=K- Ez az algoritmus például a C=(,2,5,,2,5) címletkészlet és 96 forint kifizetése esetén a DB=(,,,,2,) vektort állítja elő. Legyenek a címletkészletek a következők: i) C=(,3,6,,6,) iii) C=(,2,5,2,6,2) ii) C=(,4,6,,4,6) iv) C=(,5,7,2,35,49) A. Mi lesz a DB vektor értéke 73 forint kifizetésekor a négy címletkészlet esetén? B. A négy címletkészlet közül melyeknél címletez hibásan az algoritmus (azaz nem a lehető legkevesebb bankjegyet használja fel)? C. Minden hibás eredményhez vezető címletkészletre add meg azt a legkisebb P összeget, amelynek a kifizetésére az algoritmus nem a lehető legkevesebb bankjegyet használja fel! Add meg az algoritmus által előállított hibás, valamint a helyes DB vektort is! A. i) DB=(,,,,,) pont ii) DB=(3,,,,,) iii) DB=(,,,,,) iv) DB=(3,,,,,) B. Hibás: i), ii), iv), jó: iii) +++ pont C. i) P=2, algoritmus=(2,,,,,), helyes=(,,2,,,) ++ pont ii) P=8, algoritmus=(2,,,,,), helyes=(,2,,,,) ++ pont iv) P=, algoritmus=(3,,,,,), helyes=(,2,,,,) ++ pont 5. feladat: Adatbázis (2 pont) A SZÉTSZÓRT iskola több város több épületében működik. Az osztályokról és az osztályfőnökökről nyilvántartást készítettünk (lásd a két táblázatot). Városonként egy osztályfőnököt vezetőnek neveztek ki. Osztályfőnökök azon név szak vezető osztály Nagy Péter Matematika A 2 Kiss Anna Matematika 4 B 3 Kovács Pál Magyar 2A 3
4 Németh Erika Történelem 2B 5 Szabó János Magyar 3A 6 Horváth Zsuzsanna Kémia 4 3B 7 Kiss Etelka Rajz 4C Osztályok kód város létszám A Budapest 4 2A Budapest 36 3A Budapest 32 B Miskolc 24 2B Miskolc 26 3B Miskolc 26 4C Debrecen 2 A táblázatok lekérdezésére használható a SELECT utasítás: SELECT oszlopnév, oszlopnév,... FROM táblázatnév, táblázatnév,... WHERE logikai kifejezés; A logikai kifejezésben műveleti jel (pl. VAGY, ÉS, =, <, >=), állandó (pl. "Miskolc"), oszlopnév (pl. város) vagy zárójelben egy újabb, beágyazott SELECT utasítás használható. A lekérdezés azokat a sorokat (két táblázat esetén: sorpárokat) választja ki a táblázat(ok)ból, amelyekre a logikai kifejezés teljesül. Minden kiválasztott sorból, illetve sorpárból csak a megnevezett oszlopok adatait kapjuk eredményül. A nem beágyazott SELECT utasítás kiírja az eredményt a képernyőre. Például SELECT kód FROM osztályok WHERE város="miskolc" OR város="debrecen"; kiírja a miskolci és a debreceni osztályok kódját. A: Milyen parancs írja ki A: a 3-nál kisebb létszámú osztályok kódját és létszámát? A2: a Debrecenben dolgozók nevét és osztályuk létszámát? B: Mit ír ki az alábbi SELECT parancs? SELECT név WHERE vezető = (SELECT azon WHERE név = "Nagy Péter"); C: Milyen parancs írja ki azon főnökök nevét, akiknek van Magyar szakos beosztottja? A: SELECT kód, létszám FROM Osztályok WHERE létszám < 3 A2: SELECT név, létszám, Osztályok WHERE osztály=kód AND város="debrecen" B: Kiírt nevek: Kovács Pál, Szabó János + pont Minden hibáért egy pont levonás jár a 2-ből! C. SELECT név pont pont WHERE azon=(select vezető + pont pont 4
WHERE szak= Magyar ) pont 5