A KöMaL 2012. novemberi 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ő 2012. december 10-én LEJÁRT. |
I. 304. Tomi az interneten talált leírás alapján egy számlálót épített. A számláló - a leírás szerint - 0 másodperctől 999 másodpercig számlált volna, másodpercenként eggyel növelve a kiírt értéket. Azonban valamit elronthatott, mert az eszköz tizedmásodpercenként váltott. A hétszegmenses folyadékkristályos kijelző ráadásul nem mindig reagált a megfelelő gyorsasággal a vezérlésre, előfordult, hogy azonnal váltott egy szegmens, míg máskor várni kellett, de legfeljebb k tizedmásodpercet. Ha a k értéke 2, és egy szegmens be kell kapcsoljon, amely korábban nem világított, lehet, hogy a 0., lehet, hogy az 1., de az is lehet, hogy a 2. tizedmásodpercben kapcsol majd be. A bekapcsolás nem szükségszerűen történik meg, ha a következő jel éppen a kikapcsolás és már az jut érvényre.
Tomi elgondolkodott azon, hogy ha nem ismerjük a kezdő állapotot, és a számlálót sem állíthatjuk meg, ki lehet-e találni, hogy éppen melyik értéket kellene mutatnia az utolsó számjegynek. Rövidesen arra a megállapításra jutott, hogy bár a hiba eltérő késleltetéssel jelentkezik, megfelelő számú állapot vizsgálatával kikövetkeztethető az aktuális állás.
Írjunk olyan programot, amely az egymást követő állapotok ismeretében képes az aktuális számjegy meghatározására!
A bemeneti fájl első sorában egy egész szám, a kijelző reakcióideje szerepeljen (0k5). A következő sorban a megfigyelések n száma legyen olvasható (1n100). Az ezt követő n sor a kijelző utolsó jegyének állapotát a megfigyelés kezdetétől tizedmásodpercenként adja meg. Egy-egy sor az adott pillanatban írja le a kijelző utolsó jegyét, megadva az egyes szegmensek állapotát (0 - nem világít, 1 - világít). A kimeneti fájlban meg kell adni, hogy hány állapot vizsgálata után állapítható meg a kijelző állása és akkor éppen milyen értéket kellene mutatnia. Ha a megfigyelés időtartama nem lenne elegendő a válasz megadására, a kimenetnek a 0 értéket kell tartalmaznia.
A számjegyeket felépítő szegmensek állapotainak megadása az alábbi ábra szerinti sorrendben történik:
A fenti ábra első sora a késleltetés nélküli kijelzőállapotokat mutatja 0-tól 9-ig. A második sorban a példa a k=1 késleltetés szerint mutatja a kijelzőt. A fekete szegmensek az adott számjegy esetén mindenképpen világítanak, a fehérek pedig semmiképpen sem. A szürke színű szegmensek állapota nem határozható meg. A harmadik sor fekete szegmensei a példa első három állapotát mutatják, amelyből már egyértelműen meghatározható az utolsó számjegy valós értéke.
A program első parancssori argumentuma a bemeneti fájl neve, a második argumentuma pedig a kimeneti fájl neve legyen.
Beküldendő a program forráskódja (i304.pas, i304.cpp, ...), valamint a program rövid dokumentációja (i304.txt, i304.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. 305. A Központi Statisztikai Hivatal minden évben közzé teszi a magyarországi települések alapvető adatait. Ez a feladat a 2011. január 1-jén kiadott adatok felhasználásával készült. Az adathalmaz érdekessége, hogy a fővárost nem tartalmazza egységében, hanem kerületenkénti bontásban vannak benne az adatai.
[1.] Hozzunk létre i305 néven egy üres adatbázist. Importáljuk az adatbázisba helyseg, kisterseg, megye, megyeresz, onkormanyzat, telepulestipus, kisebbseg táblákba az ezekkel az elnevezésekkel azonos nevű txt fájlokból az adatokat! (A fájlok UTF-8 kódolású, tabulátorral tagoltak, első sorukban a mezőnevek találhatók.) A táblák kapcsolatát a leírásuk utáni ábra mutatja.
Táblák:
[2.] Készítsünk lekérdezést, amely megadja a Kecskeméti kistérség településeit lélekszám szerint csökkenő sorrendben! (2kecskemet)
[3.] Készítsünk lekérdezést arról, hogy melyik megyében hány kistérség található! (A fővárost ne jelenítsük meg!) A lista a megyék neve szerinti ábécérendben jelenjen meg! (3kistersegek)
[4.] Adjuk meg lekérdezéssel, hogy egy-egy településtípusból mennyi helység található hazánkban! (4tipusok)
[5.] Lekérdezéssel adjuk meg, hogy hány km2 Budapest területe! () (5bpter)
[6.] Soroljuk fel lekérdezéssel, hogy melyik településnek van örmény kisebbségi önkormányzata! (6ormeny)
[7.] Adjuk meg lekérdezés segítségével, hogy hány településnek van legalább ötféle kisebbségi önkormányzata! (7sokkisebbseg)
[8.] Adjuk meg lekérdezés segítségével a harminc legnagyobb népsűrűségű település nevét, lélekszámát és népsűrűségét fő/ha mértékegységben! (8suru)
[9.] Hány olyan település van megyénként, amelynek neve a megye nevének valamelyik szavával kezdődik vagy megegyezik? (9johelyen)
[10.] Melyek azok a települések, amelyek neve egy másik megye elnevezésének valamelyik szavával kezdődik? Adjuk meg a település nevét és a megyét is! (10máshol)
Beküldendő az adatbázis (i305.mdb, i305.accdb, i305.odb, ...), illetve egy rövid dokumentáció (i305.txt, i305.pdf, ...), amelyben szerepel a megoldáskor alkalmazott adatbázis-kezelő neve, verziószáma.
Letöltendő állomány: i305forras.zip
(10 pont)
I. 306. Közvélemény-kutatás, értékelés, dolgozat - se szeri, se száma az ilyen felméréseknek. Feldolgozásuk gyakran nagyobb költséggel jár, mint elkészítésük. Sokféle program segíti ezt a munkát, néhány papír alapú kérdőívet készít, egyik-másik a digitális feldolgozást is támogatja, de a legtöbb az elektronikus adatgyűjtésre helyezi a hangsúlyt. A programok közül az adatgyűjtés célját és célcsoportját figyelembe véve választhatunk.
Feladatunk egy ingyenes elektronikus űrlapkezelő rendszer bemutatása. A bemutatás során térjünk ki az eszköz alkalmazási lehetőségeire, az alkalmazás határaira, az igénybevétel feltételeire is. Mutassuk be egy képernyőképeket is tartalmazó néhány oldalas szöveg segítségével a rendszer használatát: a űrlapkészítés, -kitöltés és -feldolgozás módját. Készítsünk példaként egy, az osztálytársainknak vagy a KöMaL beküldőinek szóló, 8-10 kérdésből álló űrlapot. Az űrlap készítésénél törekedjünk a jó olvashatóságra és az esztétikus megjelenítésre.
Beküldendő egy dokumentum (i306.pdf), amely tartalmazza a feladatban leírtakat és az elkészített űrlapra mutató hivatkozást.
(10 pont)
S-jelű feladatokA beküldési határidő 2012. december 10-én LEJÁRT. |
S. 75. Adott N db (legföljebb 1000000) intervallum: (ki,vi), 1iN, ahol ki az i-edik intervallum kezdő, vi a végpontját jelöli (). Intervallumok egy halmaza jó, ha közülük bármelyik kettőt kiválasztva az egyik tartalmazza a másikat. (A (ki,vi) intervallum tartalmazza a (kj,vj) intervallumot, ha kikj és vjvi.) Készítsünk programot, amely adott intervallumhalmazból meghatározza a legnagyobb elemszámú jó halmazt.
A program olvassa be a standard input első sorából N-et, majd a következő N sorból a ki, vi szóközzel elválasztott egészeket, és írja a standard output első sorába a maximális jó halmaz elemszámát.
Pontozás: 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 maximális 9 pont, ha bármilyen hibátlan bemenetet képes megoldani az 1 mp futásidőkorláton belül. Kapható részpontszám, ha a program csak kisebb tesztesetekre tud lefutni időben. Az alábbi részpontszámokból tevődik össze a 9 pontos maximális pontszám:
1 pontért: 0<N150;
3 pontért: 200<N<2000;
5 pontért: .
Beküldendő egy tömörített s75.zip állományban a program forráskódja (s75.pas, s75.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 (s75.txt, s75.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.