A KöMaL 2014. 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ő 2014. április 10-én LEJÁRT. |
I. 343. Egy N×N-es (1N50) tábla cellái üres vagy színes négyzetek. A táblát függőlegesre állítva a színes négyzetek a legalacsonyabb üres helyet foglalják el, azaz a gravitáció miatt egymásra csúsznak. Háromféle: piros, kék és zöld színű négyzet lehetséges, amelyeket P, K és Z betűk jelölnek, az üres cellát a . karakter. A táblát szegély veszi körbe, ami megakadályozza, hogy a színes négyzetek kiessenek.
A táblát balra, jobbra, illetve függőlegesen át lehet forgatni. A forgatás hatására a színes négyzetek újra a legalacsonyabb szabad cellába csúsznak.
A tábla egyik oldalán egy nyílás van, amely induláskor a tábla legalsó sorának K-adik (1KN) oszlopába esik. Ezen keresztül a felette lévő színes négyzetek kicsúsznak, azaz a táblából törlődnek.
K=4 esetén:
A tábla forgatását egy utasítássor adja meg. Az utasítássor B, J és F betűkből áll. A B a balra, a J jobbra és az F a függőleges átforgatást írja le.
Készítsünk programot i343 néven, amely a tábla forgatását leíró utasítássort végrehajtja.
A program első parancssori argumentuma a táblát és az utasítássort leíró adatállomány neve legyen. A fájl első sorában N (1N50) a tábla méretét és K (1KN) a nyílás helyét adja meg. Az ezt követő N sor a tábla indulás előtti cellánkénti tartalmát adja meg, majd a rákövetkező sorban a forgatásokat leíró utasítássor (1karakterek száma50) következik.
A parancssor második argumentumaként megadott kimeneti állomány első három sorába az utasítássor végrehajtása utáni színes négyzetek számát írjuk. Az ezt követő N sorba a tábla forgatások utáni állapotát adjuk meg cellánként.
Beküldendő a program forráskódja (i343.pas, i343.cpp, ...) és rövid dokumentációja (i343.txt, i343.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. 344. Hazánk egyik legnagyobb érdeklődésre számot tartó sporteseménye a nyár közepén évről-évre megrendezésre kerülő Formula 1-es verseny a mogyoródi Hungaroringen. Ez a feladat a 2013-as verseny adatait dolgozza fel. Nyissuk meg a honlapunkról letölthető tabulátorokkal tagolt, UTF-8 kódolású f1.txt állományt a táblázatkezelő programban. Mentsük a táblázatot i344 néven a táblázatkezelő program alapértelmezett formátumában.
A megoldás során vegyük figyelembe a következőket:
- A megoldás során törekedjünk képlet, függvény és hivatkozás használatára.
- A megoldás során az R oszloptól jobbra, illetve az 50. sor alatt végezhetünk segédszámításokat.
1. Határozzuk meg az egyes (nem kiesett) versenyzők futamidejét órában, és a le nem körözöttek esetén (annyi kört mentek, mint a verseny köreinek száma) a győzteshez képesti beérkezési időt másodpercben.
2. A B30:B32 tartományban jelenjen meg az első három helyezett versenyző átlagsebessége km/h mértékegységben.
3. A B33-as cellában jelenjen meg annak az országnak a sportban használatos jelzése, ahonnan a versenyzők legtöbbje érkezett.
4. A nem lekörözött versenyzőknél jelenjen meg az a távolság, amennyire a célvonaltól lettek volna a leintés pillanatában, amennyiben folyamatosan az átlagsebességükkel haladtak volna.
5. Írjuk az A37-es cellába a ,,Csapatpontszámok'' szöveget. A következő 11 sorban az A oszlopban névsorban jelenjenek meg a csapatnevek képlet segítségével. Mellettük a B oszlopban a csapat összpontszáma látszódjon, vagy maradjon üres, ha a csapat egyik pilótája sem szerzett pontot. (A megoldásnál felhasználhatjuk azt a tényt, hogy minden csapatnak két versenyzője indul a futamon.)
6. A csapat oszlopcímke alá a modell alapján hozzuk létre a csapat nevét, a név a modell neve, leválasztva róla a szöveg végén egy szóközzel elválasztott azonosítót. Például a Lotus E21 modellnévből a csapatnév ,,Lotus''.
7. Ha az A35-ös cellába beírunk egy érvényes helyezést, akkor a B35-ös cellában jelenjen meg a csapat eredménye az alábbi minták szerint:
|
8. A munkalapon a kiszámított és fizikai tartalommal rendelkező cellákban jelenjen meg a mértékegység (h, s, km/h, m).
9. A versenyzők adatait tartalmazó tábla fejrészét formázzuk meg a minta alapján.
10. Hozzunk létre egy új munkalapot pepita néven. Ennek a munkalapnak a celláit állítsuk négyzet alakúra. Ennek a munkalapnak az A1 és B1 cellájába két tetszőleges, 250-nél nem nagyobb pozitív egész számot írhatunk. Alkalmazzuk a megfelelő módszert, hogy a beírt adatoktól függően a C3 cellától kezdve jelenjen meg a Formula 1 legendás pepita (fekete-fehér) zászlója, amellyel a futamokat leintik, mégpedig annyi oszlopa legyen amennyi az A1 cella értéke, és annyi sora, mint amekkora értéket a B1 cella tartalmaz. A munkalap többi cellája maradjon üres, se alap-, se származtatott adat ne szerepeljen benne.
Beküldendő a táblázatkezelő munkafüzet (i344.xls, i344.ods, ...), illetve egy rövid dokumentáció (i344.txt, i344.pdf, ...), amelyben szerepel a megoldáskor alkalmazott táblázatkezelő neve, verziószáma.
Minták:
Letölthető fájl: f1.txt
(10 pont)
I. 345. Az elmúlt néhány száz év emlékeit levéltárakban kutathatjuk. Felmerülhet a kérdés, hogy miképpen őrizzük, sőt, őrizzük-e egyáltalán a digitális korunk emlékeit jelentő weblapokat.
Korunk egyik levéltára a http://web.archive.org címen lelhető fel. Válasszunk ki öt weblapot és elemezzük azok fejlődését. Figyeljük az egyes weblapok időbeli fejlődését és az egyes ,,korszakok'' általánosan megjelenő formai és tipikus tartalmi jellemzőit. A weblapok között legyen egy hírportál, egy televíziós portál, egy sportegyesület, egy magyar vállalkozás, és a tanuló iskolájának weblapja.
Beküldendő PDF formátumban (i345.pdf), a visszatekintésünket tartalmazó, néhány ezer karakteres, képekkel illusztrált leírás.
(10 pont)
S-jelű feladatokA beküldési határidő 2014. április 10-én LEJÁRT. |
S. 88. Adott egy irányítatlan gráf \(\displaystyle N\) (\(\displaystyle 1 \le N \le 100\;000\)) csúccsal és \(\displaystyle M\) (\(\displaystyle 1 \le M< N\)) éllel. Számítsuk ki, hogy hányféleképpen lehet az éleket úgy irányítani, hogy minden csúcsból legfeljebb egy él induljon ki. Adjuk meg ennek a számnak az 1000000007-tel vett osztási maradékát.
A program olvassa be a standard input első sorából \(\displaystyle N\)-et és \(\displaystyle M\)-et, majd a következő \(\displaystyle M\) sorból az \(\displaystyle a_i\), \(\displaystyle b_i\) (\(\displaystyle 1 \le a_i, b_i \le N\)) szóközzel elválasztott egészeket, melyek mindegyike egy-egy irányítatlan él két végpontját jelöli. Mivel a gráf nem feltétlenül egyszerű, ezért ugyanaz a számpár többször is szerepelhet a bemenetben. Írjuk a standard output első és egyetlen sorába a lehetőségek számát modulo 1000000007.
Pontozás és korlátok: A programhoz mellékelt, a helyes megoldás elvét tömören, de érthetően leíró dokumentáció 1 pontot ér. A programra akkor kapható meg a további 9 pont, ha bármilyen hibátlan bemenetet képes megoldani az 1 mp futásidőkorláton belül.
Részpontszámok a következőkre kaphatóak:
\(\displaystyle \bullet\) a program \(\displaystyle N\le 200\)-ra megoldást ad;
\(\displaystyle \bullet\) a program \(\displaystyle N\le 5000\)-re megoldást ad.
Beküldendő egy tömörített s88.zip állományban a program forráskódja (s88.pas, s88.cpp, ...) az .exe és más, a fordító által generált állományok nélkül, valamint a program rövid dokumentációja (s88.txt, s88.pdf, ...), amely a fentieken túl megadja, hogy a forrás mely fejlesztői 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.