Középiskolai Matematikai és Fizikai Lapok
Informatika rovattal
Kiadja a MATFUND Alapítvány
Már regisztráltál?
Új vendég vagy?

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ű feladatok

A 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:

Üres nincs öltés
f fekete
s sötétzöld
v világos zöld

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.

Színek Száma
f
s
v  

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)

megoldás, statisztika


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 (i\le4) 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)

megoldás, statisztika


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 (3\leN\le200) a sorok száma; a fájl második sorában M (3\leM\le200) 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)

statisztika


S-jelű feladatok

A 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 (3\leW,H\le100). 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 K\ A\ B 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)

megoldás, statisztika


Figyelem!

Az informatika feladatok megoldásait ne e-mailben küldd be! A megoldásokat az Elektronikus munkafüzetben töltheted fel.