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 2012. áprilisi 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ő 2012. május 10-én LEJÁRT.


I. 292. Egy hatalmas tesztpályán egy robot mozgását kívánjuk vizsgálni a síkban. A robot mozgása a lehető legegyszerűbb, mert egy lépésben a koordináta-rendszer két tengelyének irányába tud elmozdulni. A robot a (0,0) pontból indul, és egy utasítássort hajt végre. Az utasítássor E, H, J és B betűkből áll. Ha a robot az (x,y) pontban van, akkor az E parancs az (x,y+1), a H parancs az (x,y-1), a J parancs az (x+1,y), illetve a B parancs az (x-1,y) pontba viszi át.

A tesztpályán ellenőrzési pontok vannak. A robot az ellenőrzési pontoktól való távolságok összegét minden lépése után feljegyzi. Távolságon a Manhattan-távolságot értjük a feladatban, amely az (x1,y1) és (x2,y2) pontok esetén |x1-x2|+|y1-y2|.

A program első parancssori argumentuma legyen egy adatállomány neve. A fájl első sorában N, az ellenőrzési pontok száma (1\le N\le 100\;000) és M, a robot utasításainak száma (1\le M\le 300\;000) van. Az ezt követő N sorban az ellenőrzési pontok x és y koordinátái (-1\;000\;000\le x,y\le +1\;000\;000) vannak szóközzel elválasztva. Az ellenőrző pontok között lehetnek olyanok, amelyeknek mindkét koordinátája megegyezik. A következő sorban M darab karakter (EH, JB) van, amely a robot utasítássorát jelenti.

A parancssor második argumentumaként megadott kimeneti állomány M sorban egy-egy egész számot, a robot által az addigi utasítások végrehajtása után feljegyzett távolság-összeget adja.

Például:

A feladat megoldási ideje 1 másodperc lehet. A tesztpálya mérete és a nagyszámú ellenőrzési pont miatt a hatékony futás érdekében megfelelő előkészítés után érdemes a távolságok összegét számolni.

Beküldendő a program forráskódja (i292.pas, i292.cpp, ...), valamint a program rövid dokumentációja (i292.txt, i292.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ó.

Adrian Satja Kurdija (COCI feladata) nyomán

(10 pont)

megoldás, statisztika


I. 293. A rádiócsatornák műsorait az ország területén több adó sugározza. Ez volt a témája a 2010. májusi informatika érettségi gyakorlati vizsga adatbázis-kezelés feladatának, amely még a 2009-es adatokat tartalmazta. A rádióadók, illetve azok sugárzási adatai változnak. Vizsgáljuk meg, hogy milyen változások történtek. Rendelkezésünkre állnak a rádiócsatornák 2009-es és 2012-es sugárzási adatai és földrajzi helyük az aregi.txt, az auj.txt és a telepules.txt állományokban.

[1.] Készítsünk új adatbázist i293 néven. Importáljuk az adattáblákat az adatbázisba aregi, auj és telepules néven. A txt típusú adatállományok tabulátorokkal tagolt UTF-8 kódolásúak, és az első soruk tartalmazza a mezőneveket. Az aregi és az auj táblákhoz adjunk hozzá azon néven egyedi azonosítót.

[2.] Beolvasás során állítsuk be a megfelelő adatformátumokat és kulcsokat.

Táblák:

aregi  (azon, frekvencia, teljesitmeny, csatorna, adohely, cim) a 2009-es adatokat tartalmazza;

azon   a frekvencialista aktuális elemének azonosítója (számláló), ez a kulcs;

frekvencia  a sugárzási frekvencia MHz-ben (szám);

teljesitmeny   a sugárzás maximális teljesítménye kW-ban (szám);

csatorna   a rádiócsatorna neve (szöveg), üres, ha a sugárzás szünetel;

adohely   az adóállomás települése (szöveg);

cim   a településen belüli sugárzási hely neve (szöveg), ha a településen belül csak egy adó van, akkor üres;

auj   (a mezők neve és típusa megegyezik az aregi tábláéval) a 2012-es adatokat tartalmazza;

telepules  (nev, megye)

nev  település neve (szöveg), ez a kulcs (minden, a kiosztásban előforduló település neve megtalálható);

megye  a település megyéjének neve (szöveg).

A rádiócsatornákat a sugárzási teljesítmény alapján az alábbi kategóriákba sorolják:

Készítsük el a következő feladatok megoldását. Az egyes lekérdezéseknél ügyeljünk arra, hogy mindig csak a kért értékek jelenjenek meg és más adatok ne. A megoldásainkat a zárójelben lévő néven mentsük el.

[3.] Soroljuk fel lekérdezés segítségével azokat a településeket, ahonnan 2012-ben a ,,MR1-Kossuth Rádió''-t sugározzák. A listában minden településnév csak egyszer szerepeljen ábécé sorrendben. (3kossuth)

[4.] Listázzuk ki azoknak a településeknek a nevét, ahonnan csak egy rádiócsatornát sugároztak 2009-ben. (4egy)

[5.] Készítsünk lekérdezést, amely felsorolja azokat a 2009-es rádiócsatornákat, amelyek mára megszűntek, azaz az országban nem sugároznak. (5megszunt)

[6.] Adjuk meg lekérdezés segítségével azokat az adóhelyeket, címeket és frekvenciákat, ahol csatornanév-váltás történt. A listában a frekvencia, a régi és az új csatornanév, az adóhely és a cím jelenjen meg. (6valtas)

[7.] Soroljuk fel lekérdezés segítségével azokat a településeket, ahol ma már van rádióadó, de 2009-ben még nem volt. (7ujak)

A további feladatok megoldását a 2012-es adatok alapján készítsük el.

[8.] Készítsünk lekérdezést, amely meghatározza, hogy megyénként hány olyan település van az adatbázisban, ahonnan rádióadást sugároznak. (8megyenkent)

[9.] Adjuk meg lekérdezés segítségével azt a térségi teljesítményű (a fenti táblázatból meghatározható értékű) rádiócsatornát, amelyet legtöbb adóhelyen sugároznak. (9nepszeru)

[10.] Lekérdezéssel írassuk ki azoknak a településeknek a nevét, ahonnan van helyi, térségi és országos csatornasugárzás is. A listában minden település nevét egyszer jelenítsük meg. (10vegyes)

[11.] Készítsünk lekérdezést, amely meghatározza településenként, hogy hány helyi, térségi és országos adó sugároz az országban. A számlálásból hagyjuk ki azokat a csatornákat, ahol a teljesítmény, illetve a csatorna neve hiányzik. (11sugarstat)

Beküldendő az adatbázis (i293.odb, i293.mdb, ...), valamint egy rövid dokumentáció (i293.txt, i293.pdf, ...), amelyből kiderül az alkalmazott adatbázis-kezelő neve, verziószáma.

(10 pont)

megoldás, statisztika


I. 294. Ha egy pontszerű test egyszerre két, egymásra merőleges rezgést végez, akkor a mozgás pályája a két rezgés paramétereitől függően különféle érdekes görbe lesz, melyeket Lissajous-görbének hívnak.

A mozgás leírása Descartes koordináta-rendszerben:


x(t)=A_1 \sin\, (\omega_1 t+\varphi_1)
\quad\text{és}\quad
y(t)=A_2 \sin\, (\omega_2 t+\varphi_2),

ahol x(t) és y(t) a pozíció az adott irányokban az idő függvényei, A1 és A2 a két rezgés amplitúdója (tágassága), \omega1 és \omega2 a két rezgés körfrekvenciája, \varphi1 és \varphi2 pedig a t=0 időpontban a fázisszögeket jelenti.

Készítsünk Logo eljárást a pályagörbe megjelenítésére. Az egyszerűség kedvéért néhány paramétert rögzítünk: legyen A1=A2=400 képpont, és \varphi1=0.

Az eljárás neve és paraméterezése legyen lissa o1 o2 fi2, ahol o1 az \omega1, o2 az \omega2 körfrekvenciát jelenti, fi2 pedig a \varphi2 fázisszöget.

Beküldendő az eljárást tartalmazó Logo projektfájl (i294.imp, i294.lgp), illetve egy rövid dokumentáció (i294.txt, i294.pdf, ...), amelyben szerepel a megoldáskor alkalmazott program neve.

(10 pont)

megoldás, statisztika


S-jelű feladatok

A beküldési határidő 2012. május 10-én LEJÁRT.


S. 71. Űrhajónkat váratlanul idegen lények tartóztatták fel, és járművünk megsemmisítésével fenyegetnek, amennyiben nem tudunk bizonyítékot felmutatni arra vonatkozóan, hogy egy intelligens fajhoz tartozunk. (Szemmel láthatóan az, hogy űrhajót tudunk építeni, nem elég meggyőző.)

Természetesen nálunk van nyolc darab, éppen az ilyen vészhelyzetek esetére kidolgozott adatfájl, amellyel intelligenciánkat igazolhatjuk, sajnálatos módon azonban az idegen lények a bizonyíték méretét legfeljebb 64 KiB-ban határozták meg. Ennek következtében bizonyítékként nem magukat az adatfájlokat küldjük el, hanem egy programot -- egészen pontosan annak forráskódját, hiszen feltételezhető, hogy az űrlények rendelkeznek C++, Pascal stb. fordítókkal -- amelyet futtatva az előállítja az adatfájlokat.

Írjunk tehát programot, amely a honlapunkon megtalálható és onnan letölthető nyolc adatfájl közül minél többet pontosan reprodukál úgy, hogy eközben a program forráskódjának, illetve az általa esetlegesen felhasznált segédállományoknak a teljes mérete nem haladja meg az előírt határértéket.

A szokásoktól eltérően a forráskódot nem szükséges megjegyzésekkel ellátni, és a standard output használata helyett az adatfájlok tartalmát fájlokba kell írni (az eredeti nevükön). Változatlanul beküldendő azonban dokumentáció, amely tartalmazza az egyes adatfájlok reprodukálásához felhasznált megfigyelések, algoritmusok leírását, és azt, hogy a forrásfájl milyen környezetben fordítható. A megoldások a forráskódon kívül semmilyen más futtatható (gépi kódú) elemet nem tartalmazhatnak.

A beérkezett megoldásokat a tökéletesen reprodukált adatfájlok száma szerint (és holtverseny esetén a teljes méret alapján) rangsoroljuk, az első helyezett 10 pontot, a második 9, a harmadik 8, a többi megoldás legfeljebb 7 pontot kaphat.

A tömörítendő adatfájlok: s71.zip.

Beküldendő egy tömörített s71.zip állományban a program forráskódja (s71.pas, s71.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 (s71.txt, s71.pdf, ...), amely tartalmazza a megoldás rövid leírását, és megadja, hogy a forrás mely fejlesztői környezetben fordítható.

(10 pont)

statisztika


Figyelem!

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