Nemes Tihamér OKSzTV'94
Második forduló
11-13. osztályosok
1994. január 14. 1400-1700
1. feladat:
(15 pont)
Egy ékezetes betűket használó ábécé (ilyen például a magyar, cseh,
spanyol stb.) ékezetes betűit két jellel kódoljuk: az ékezet nélküli betűvel,
s fölé írandó ékezettel. Például egyes betűk így nézhetnek ki:
á - a' |
ö - o: |
? - n~ |
â - a^ |
é - e' |
ő - o" |
? - e` |
... |
A használható ékezetek jelei: ' " : ` ~ ^
Készíts programot, amely a fenti jelekkel kódolt ékezetes betűket tartalmazó
szöveget beolvassa egy szekvenciális file-ból, majd úgy írja ki a képernyőre,
hogy a normál karakterek minden második sorban helyezkednek el, s a fölöttük
levő sor megfelelő helyére kerülnek az ékezetek! A file-ban levő sorvégek
hatására a képernyőn is új sort kell kezdeni.
Az ékezetek jeleit a szövegben más célra nem használjuk. A szöveg biztosan
helyes, az ékezetek alkalmazhatóságát nem kell ellenőrizni.
Példa:
Bemenet |
Kimenet |
E'kezetes betu"ket
tartalmazo' szo:veg. |
' "
Ekezetes betuket
'
:
tartalmazo szoveg. |
2. feladat:
(15 pont)
Adott egy (elvileg végtelen) sakktábla. A tábla kockáit egész számpárokkal
jelöljük. Írj egy olyan programot, amely beolvassa két kocka koordinátáit
és megadja az első kockáról a másodikra való eljutás módját abban az esetben,
ha a mozgás mindig a sakkbeli lóugrás szabályai szerint történik! A képernyőre
írt eredménynek tartalmaznia kell az összes érintett kocka koordinátáit.
Megjegyzések:
-
a) A megoldásban figyelembe kell venni, hogy a kiindulási, illetve végkocka
nagyon
messze is lehet egymástól.
-
b) Nem kötelező az optimális megoldást keresni, de törekedni kell olyan
lépéssorozat megtalálására, amely közel áll az optimálishoz.
-
c) Az érkezési kocka bárhol lehet az indulási kockához képest.
Az alábbiakban megadjuk a feladat két lehetséges megoldását abban az esetben
ha a (3,7) koordinátájú pontból indulunk és a (10,14) koordinátájú pontba
érkezünk:
-
(3,7) (5,8) (6,10) (7,12) (9,13) (11,12) (10,14)
-
(3,7) (4,9) (5,11) (6,13) (8,14) (9,12) (10,14)
3. feladat:
(20 pont)
Adott egy NxM-es mátrix (1<=N, M<=20) amely egy terület domborzati
térképét képezi le. (A mátrix pozitív valós számokat tartalmaz, amelyek
a megfelelő pontok magasságát jelölik.) A mátrix egy adott pontjára ráhelyezünk
egy labdát. A labda mindig lefelé gurul; a különböző elfogadható irányok
között véletlenszerűen választ. Egy adott kockáról négy irányban lehet
továbblépni: a fölötte, alatta, tőle jobbra, illetve balra lévőre (pl.
ha a (7,5) kockában vagyunk a (6,5), (8,5), (7,4) és (7,6) kockákra léphetünk).
Írj egy olyan programot, amely beolvassa a domborzati térképet és a
labda indulási pozícióját, és megállapítja, hogy a labda elérheti-e a térkép
szélét (kigurul-e a térképről) vagy sem. Ha a labda kigurulhat, a program
adja meg az (egyik) lehetséges útvonalat, ha nem, akkor jelezze, hogy a
labda elakadt.
A táblázat elemeit számpárokkal jelöljük, a koordináták 1 és N, illetve
M közöttiek. A bemeneti adatokat tartalmazó állomány struktúrája a következő:
sorok száma oszlopok száma |
(szóközökkel elválasztva) |
az első sor adatai |
(szóközökkel elválasztva) |
... |
|
az utolsó sor adatai |
(szóközökkel elválasztva) |
indulási pozíció sora indulási pozíció oszlopa |
(szóközökkel elválasztva) |
A program a fentieken kívül legyen képes a labda sebességének kezelésére
is. Ha a labda N méter magasságból ereszkedik le, akkor sebessége N m/s-mal
nő, ha N métert emelkedik, akkor ugyanannyival csökken. (Ilyen körülmények
között a labda kijöhet a völgyekből.)
4. feladat:
(27 pont)
Egy szűkített LOGO programozási nyelv az alábbi utasításokból áll:
forward hossz |
előrelépés hossz lépést az aktuális irányba |
left szög |
balrafordulás szög fokkal az aktuális helyen |
back hossz |
hátralépés hossz lépést az aktuális irányba |
right szög |
jobbrafordulás szög fokkal az aktuális helyen |
reset |
alaphelyzetbe állás: üres képernyő, aktuális hely a képernyő közepe,
aktuális irány a felfelé. toll a papíron |
penup |
toll felemelése |
pendow |
toll letevése |
repeat db [utasítások] |
utasítások db-szeri megismétlése |
A hossz, a szög és a db tetszőleges egész számkonstansok lehetnek. Az utasítáokat
és paramétereiket legalább egy szókö vagy sorvégjel választja el egymástól.
Készíts programot, amely egy szövegfile-ból beolvas egy, a fenti utasításokat
tartalmazó LOGO programot, majd végrehajtja azt!
Példa:
Bemenet |
Kimenet |
reset
left 90 forward 100
repeat 4 [forward 100 rigth 90] |
|
Elérhető összpontszám: 77 pont+23 pont az 1. fordulóból