A KöMaL 2008. márciusi informatika feladatai
Kérjük, ha még nem tetted meg, olvasd el a versenykiírást.
Feladat típusok elrejtése/megmutatása:
I-jelű feladatokA beküldési határidő 2008. április 15-én LEJÁRT. |
I. 181. Textíliák gépi hímzésével foglalkozó vállalkozás egyik munkájának tervezéséhez adjunk segítséget. Az első belső borítón látható képen egy hímzés minta felének karakterekkel megadott ábrázolását tartalmazza a beka.txt fájl (tabulátorokkal tagolt szövegállomány).
Olvassuk be táblázatkezelő program segítségével a beka.txt fájlt úgy, hogy az első beolvasott adat a ,,Béka'' munkalap A1-es cellájába kerüljön. (A forrásadatok üres cellákat is tartalmaznak. Ezekre a helyekre nem kerül öltés.)
A cellák tartalmának jelentése:
|
A kép karakteres (az ábrához hasonló) megjelenítéséhez végezzünk el néhány beállítást. Az A:AX oszlop szélességét és az 1:50 sor magasságát állítsuk be úgy, hogy a cellák négyzet alakúak és láthatóak legyenek a képernyőn. A kép felének megfelelő adatok az A1:Y50 tartományban vannak. Másolható függvény segítségével oldja meg a béka másik felének szimmetrikus előállítását. A színes megjelenítéshez feltételes formázást használhatunk.
Az AY:51 cellától kezdve készítsük el a mintának megfelelően az öltések színeinek statisztikáját. Igyekezzünk olyan kifejezést használni a számításhoz, amelyet másolva helyes eredményt kapunk.
|
A ,,Derék_béka'' munkalapra, függvények segítségével, a béka mintáját tetszőleges irányba 90 fokos szöggel elforgatva jelenítsük meg. A ,,Nagy_béka'' munkalapra nagyítsuk fel kétszeresére a ,,Béka'' munkalapon található mintát.
Beküldendő a táblázatkezelő munkafüzet (181.xls, 181.ods, ...), illetve egy rövid dokumentáció (181.txt, 181.pdf, ...), amelyben szerepel a megoldáskor alkalmazott táblázatkezelő neve, verziószáma, valamint a megoldás rövid leírása.
(10 pont)
I. 182. Készítsünk szimulációs programot karakteres képernyőn autók körforgalomban közlekedéséről. A körforgalom két egymásra merőleges utat köt össze. A csatlakozó útszakaszok az óramutató járásával ellenkező irányban 1-től 4-ig számozottak. Az autókat ezek a számok jelképezik a karakteres képernyőn úgy, hogy mindegyik autón annak a kivezető útnak a száma van, amelyen az autó tovább szeretne haladni. Ez lehet az az út is, amelyen érkezik: ilyenkor tesz egy kört, és visszafordul.
Az utak körforgalom felé vezető sávjainak elején minden szimulációs lépésben pi (i4) valószínűséggel érkezik új autó (ha az i-edik út elején lévő mező szabad). A valószínűségek 0 és 1 közötti valós számok, melyeket a program a parancssor első négy argumentumaként kap meg. Az autók mindaddig állandó sebességgel haladnak, amíg az a mező, amelyre lépnének szabad. Ha egy náluk lassúbb jármű halad előttük, akkor átmenetileg fölveszik az előttük haladó sebességét. Az autók sebessége 1 és 5 közötti egész: 1 érték esetén az autó minden szimulációs lépésben továbbhalad (ha tud), 5 esetén csak minden ötödikben igyekszik továbbmenni, egyébként a helyén marad. A körforgalomban tartózkodó autóknak elsőbbségük van az oda behajtani kívánó autókkal szemben. A körfogalomból kifelé tartó autók a kivezető út végén eltűnnek.
A program a beolvasott valószínűségeket felhasználva mutassa be a járművek mozgását. A szimuláció a szóköz billentyű leütésére legyen megállítható, és a szimuláció sebessége 1-től 9-ig legyen állítható a számbillentyűkkel.
Beküldendő a program forráskódja (i182.pas, i182.cpp, ...), valamint a program rövid dokumentációja (i182.txt, i182.pdf, ...), amely tartalmazza a megoldás rövid leírását, és megadja, hogy a forrásállomány melyik fejlesztő környezetben fordítható.
(10 pont)
I. 183. Bergengócia kórházaiban a kiadási összegeket igyekeznek csökkenteni. A kilyukadt lepedőket nem dobják el, hanem megfoltozzák. Rendelkeznek egy korszerű lyukfelismerő géppel, amely minden lepedőnél adott felbontással meghatározza, hogy cellánként a vászon ép-e, vagy lyukas. (Lyuk a vászon szélén nem lehet, mert a lepedő széle a beszegés miatt nagyon erős.)
A felismerő gép egy cellára V értéket ad, ha a vászon sértetlen és L értéket, ha lyukas. A lyukas területre az anyaghiányt éppen eltakaró téglalap alakú foltot szeretnének varrni, amelynek oldalai a lepedő oldalaival párhuzamosak. A lyukas terület összefüggő, ha az L tartalmú cellák oldalukkal, de különálló, ha csak sarkukkal érintkeznek, vagy nem érintkeznek. A foltok átfedhetik egymást.
Készítsünk programot, amely a lyukfelismerő gép által meghatározott adatállomány alapján megadja, és a standard kimenetre írja a lepedőre varrandó foltok sorszámát, bal felső és jobb alsó sarkának koordinátáit (sor száma, oszlop száma sorrendben) a lepedő bal felső sarkához képest.
A program parancssori argumentuma legyen a lepedőt leíró adatállomány neve. A fájl első sorában egy egész érték szerepel: N (3N200) a sorok száma; a fájl második sorában M (3M200) az oszlopok száma. Az ezt követő N sor mindegyike M számú karaktert tartalmaz a megfelelő cellák állapotának (V vagy L) leírására.
Beküldendő a program forráskódja (i183.pas, i183.cpp, ...), valamint a program rövid dokumentációja (i183.txt, i183.pdf, ...), amely tartalmazza a megoldás rövid leírását, és megadja, hogy a forrásállomány melyik fejlesztő környezetben fordítható.
(10 pont)
S-jelű feladatokA beküldési határidő 2008. április 15-én LEJÁRT. |
S. 34. Bergengócia királya elérkezettnek látja az időt, hogy férjhez adja leányát, ezért legjobb építészével egy sárkányokkal teli labirintust terveztet. A királylány kezét csak az a lovag nyerheti el, aki ennek egyik bejáratán belépve sikeresen kijut bármelyik másik bejáraton. A király parancsa szerint olyan labirintust kell tervezni, hogy a lovag bármelyik kijáratot is választja, útközben legalább bizonyos számú sárkányfejet le kell vágnia.
Ilyen fontos döntés esetén a király még leghűségesebb embereiben sem bízhat. Így minket kért meg, hogy írjunk programot, mely ellenőrzi, hogy az építész által elkészített labirintusterv teljesíti-e a kívánalmakat.
A program az alaprajzot fájlból olvassa, az eredményt fájlba írja. A bemeneti, illetve kimeneti fájlok nevei az első, illetve második parancssori argumentumok.
A bemenet első sorában szóközzel elválasztva W, H és F, a labirintus szélessége, magassága és a levágandó sárkányfejek minimális F száma szerepel (3W,H100). Az ezt követő H sor mindegyike W karaktert tartalmaz, mely:
szóköz, ha az adott mező folyosó, melyről tetszőleges szomszédos folyosóra lehet lépni
J, B, F és L, ha az adott mező folyosó, és egy olyan kapu van rajta, melynek hatására a mezőről jobbra, balra, fel vagy lefelé nem lehet lépni
*, ha a mező fal
N=1-9 számjegy, ha a mező folyosó és rajta egy N-fejű sárkány rejtőzik, melyet a mezőre lépve mindenképp le kell győzni.
Bejáratnak a labirintus szélén lévő folyosókat tekintjük, amelyekről feltehetjük, hogy mindig üresek lesznek, illetve legalább 1 fal határolja őket.
A kimenet egyetlen sora alakban három, szóközzel elválasztott számot tartalmazzon: ha a terv helyes, mindhárom érték legyen 0, egyébként egy olyan A bejárattól B kijáratig vezető útvonal leírása, mely során csak K (K<F) sárkányfejet kell levágnunk. A bejáratokat a bal felső saroktól kezdődően az óramutató járásával megegyezően, 1-től kezdve számozzuk, több megoldás esetén a legkisebb K, majd ezen belül a legkisebb A, majd B értékűt írjuk ki.
Beküldendő a program forráskódja (s34.pas, s34.cpp, ...), valamint a program rövid dokumentációja (s34.txt, s34.pdf, ...), amely tartalmazza a megoldás vázlatos leírását, és megadja, hogy a forrásállomány melyik fejlesztő környezetben fordítható.
(10 pont)
Figyelem!
Az informatika feladatok megoldásait ne e-mailben küldd be! A megoldásokat az Elektronikus munkafüzetben töltheted fel.