A KöMaL 2010. januári 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ő 2010. február 10-én LEJÁRT. |
I. 229. A sportlövő edzéseken a hagyományos lőfegyvereken kívül elektronikus változatokat is használnak. A lőállásokból ekkor monitorokon szimulált lőlapokra történik a ,,tüzelés''. Elektronikus rendszer tárolja a lövések koordinátáit és értékeli ki az eredményeket.
A lősorozat megkezdése előtt a céltábla közepének (cx;cy) koordinátáit tárolják. Majd -- ugyanebben a koordinátarendszerben -- rögzítésre kerülnek a versenyző lövéseinek (lx;ly) vízszintes és függőleges koordinátái. A kiértékeléshez a találatok körértékét számolják ki. Ennek szabályai a következők:
-- A középponttól mért távolság (x;y) irányú összetevőinek meghatározásához a találat vízszintes és függőleges koordinátáiból kivonják a céltábla középpontjának megfelelő koordinátáit:
x=lx-cx; y=ly-cy.
-- A lövés a maximális 10 kört éri, ha a céltábla közepébe talált. Az érték annyival csökken, ahány egységgel messzebb van a középponttól: .
-- Ha a találat a középponttól 10-nél nagyobb távolságra van, akkor a körérték 0. -- A körértéket végül két tizedesre kerekítik.
A lolap.txt állomány első sorában N (3N500) a lövések száma, a második sorában a céltábla közepének cx, cy (25,00cx;cy75,00) koordinátái találhatók. Az ezt követő N sorban a versenyző egyes találatainak lx, ly (0,00lx;ly100,00) koordinátái olvashatók.
Például:
|
A példa jelentése:
-- 65 találat eredményét értékeljük ki.
-- A céltábla középpontjának koordinátái: (28,95;31,60).
-- Az első találat esetén x=23,67-28,95=-5,28 és y=30,18-31,60=-1,42. A körérték tehát .
-- A második találat körértéke 0.
Készítsünk programot loveszet néven, amely az alábbi problémákat oldja meg:
A képernyőre írást igénylő részfeladatok eredményének megjelenítése előtt írjuk a képernyőre a feladat sorszámát (például 3. feladat: ). A körértékeket mindig két tizedes pontossággal jelenítsük meg, felesleges tizedes jegyek ne legyenek.
1. Olvassuk be a lolap.txt állományban talált adatokat, és annak felhasználásával oldjuk meg a következő feladatokat. Ha az állományt nem tudjuk beolvasni, akkor a forrás első 10 sorának adatait jegyezzük be a programba, és úgy oldjuk meg a következő feladatokat.
2. Listázzuk ki a legnagyobb találat sorszámát és körértékét.
3. A célra tartás egyenletességének jellemzéséhez adjuk meg, hogy a lősorozatban hány 0 körértékű találat volt.
4. Határozzuk meg, hogy melyik egymás utáni tíz lövés körértékének átlaga a legnagyobb. A képernyőre írassuk ki a sorozat első lövésének sorszámát.
5. A lövész teljesítményét jellemzi, ha valamelyik irányban több találata van, mint a többiben. Adjuk meg, hogy a nem 0 körértékű találatok közül hány volt az egyes síknegyedekben. Írjuk képernyőre az eredményeket a következőhöz hasonló formában: ,,1. síknegyedben: 13 találat, 2. síknegyedben: 18 találat, ...''.
(x0 és síknegyed =1) és (x0 és síknegyed =4) és
(x<0 és síknegyed =2) és (x<0 és síknegyed =3).
6. Adjuk meg, hogy volt-e olyan egymás utáni négy lövés, hogy a találatok az 1., a 2., a 3. és a 4. síknegyedbe csapódtak egymás után.
7. Kérjünk be egy körértéket, és adjuk meg annak a leghosszabb lövéssorozatnak a hosszát, amelyben ennél rosszabbat a lövész nem lőtt.
Beküldendő egy tömörített i229.zip állományban a program forráskódja (i229.pas, i229.cpp, ...), valamint a program rövid dokumentációja (i229.txt, i229.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. 230. Tervezzük meg a KöMaL pontversenyének adatait tároló relációs adatbázist. Az adatbázis szerkezetének megtervezésénél figyeljünk arra, hogy az alábbi kérdések megválaszolhatók legyenek (nem feltétlenül közvetlenül, egyetlen lekérdezéssel).
* Mely feladatok kerültek kitűzésre 2008 áprilisában?
* Kik küldtek be megoldást az I. 200.-as feladatra?
* Hány versenyző küldött be megoldást I jelű feladatra?
* Adott versenyző hány pontot szerzett a 2007/2008-as tanévben?
* Adott iskolából kik versenyeztek?
* Ki adott be maximális pontszámúra értékelt I jelű programozási feladatot?
* Mi lett a verseny végeredménye az S kategóriában a 2008/2009-es tanévben?
A fenti kérdések csak segítik a feladat megoldását, de a rájuk adott válasz nem része a feladat megoldásának.
A megoldás során a következő sorrendet kövessük:
* Állapítsuk meg a tárolandó adatokat. (A tárolandó adatok kapcsán érdemes visszagondolni a regisztráció folyamatára, valamint praktikus megnézni a pontverseny eredményét: http://www.komal.hu/eredmeny/eredmeny.h.shtml. Nem kell kitérni a feladat kitűzőjére, a feladat tartalmára és a javító személyére.)
* Határozzuk meg az egyedeket és rendeljük hozzá a megfelelő tulajdonságokat.
* Jelöljük meg a kulcsokat és határozzuk meg az egyedek közötti kapcsolatokat (az ehhez tartozó ábrát be kell illeszteni a megoldásba).
* Adjuk meg a táblák szerkezetét, a mezők szerepét és típusát.
A megoldás szövege az egyedeket (táblákat) és a hozzájuk tartozó tulajdonságokat (mezőket) írja le az I. 218.-as feladatban láthatóhoz hasonlóan.
A szöveg mellett egy ábrát is el kell készíteni, amely az adatbázis szerkezetét tartalmazza. Mintaként tekinthető az I. 218.-as feladatban látható ábra. Követelmény a könnyű módosíthatóság. Az értékelésben előnyt jelent, ha az ábra ingyenes és/vagy multiplatform eszközzel készült.
Beküldendő egy tömörített állományban (i230.zip) a megoldást tartalmazó dokumentum (i230.doc, i230.pdf, ...) valamint az adatbázis szerkezetét tartalmazó ábra a készítéséhez használt program saját formátumában. Utóbbi program pontos megnevezését a dokumentumban meg kell adni.
(10 pont)
I. 231. A közlekedési járműveken elhangzó tájékoztatónak nem a szövegét, hanem annak szavait, kifejezéseit olvassa fel a bemondó valamilyen hanghordozóra. A tájékoztató szövegeket számítógéppel állítják össze a fenti részletekből a sok szükséges változat miatt.
A letölthető hangok.zip állomány wav formátumú ilyen gyűjteményt tartalmaz. A hangállományok között megtalálható a tájékoztató szövegek elhangzása előtt megszólaló figyelemfelhívó szignál is.
Állítsunk össze e forrásból egy vonatindulásra vonatkozó korábbi és az indulás előtti utolsó figyelmeztetést tartalmazó hangállományt. Mind a két tájékoztató elején szólaljon meg a szignál.
A feladat megoldásához például az Audacity ingyenesen letölthető (http://audacity.sourceforge.net/) programot használhatjuk.
Beküldendő az összeállított két hangfelvétel egy tömörített mappában (i231.zip), illetve egy rövid dokumentáció (i231.txt, i231.pdf, ...), amelyben szerepel a megoldás menete.
(10 pont)
S-jelű feladatokA beküldési határidő 2010. február 10-én LEJÁRT. |
S. 50. Egy népszerű kosárlabdacsapat összes szurkolójával, mintegy ötezer fővel egy egyoldalas elégedettségi kérdőívet töltettek ki. A kérdőív urlapminta.pdf néven honlapunkról letölthető.
A klub informatikusa kapta meg a kérdőív feldolgozásának feladatát. Mivel nem akarta kézzel bevinni a fejenként adott 12 választ, ezért a következőképpen gondolkodott.
1. A lapokat digitalizálja egy automata lapbehúzós szkenner segítségével.
2. Az előállított képeket egy programmal feldolgozza.
Tisztában volt vele, hogy a programnak nem lesz egyszerű dolga, mivel a következő problémákkal kell megküzdenie:
1. A lapbehúzó nem dolgozhat tökéletesen, ezért -- bár a nyomtatott lapok mind egyformák voltak -- a különböző képeken a nyomtatott elemek nem pontosan ugyanoda esnek majd. Természetesen az elmozdulás meglehetősen kicsi lesz.
2. A kitöltők különböző színű tollat használtak és különbözőképpen jelölték a választ, pl. áthúzás, karikázás, besatírozás stb.
3. Előfordulhat, hogy néhány kitöltő egy-egy választ kihagyott, esetleg duplán jelölt.
Sajnos az informatikusnak el kellett utaznia, ezért a KöMaL versenyzőinek segítségét kéri a probléma megoldásában. Tesztelési célokra itt hagyott 10 darab RAW formátumú fájlt (a képméret X×Y).
Készítsünk programot, amely a standard bemenetről beolvassa a képfájl nevét (a fájl a program mappájában található), majd egymástól pontosvesszővel elválasztva kiírja a standard kimenetre a lapon található válaszokat, azaz kérdésenként az 1, 2, 3, 4 számok egyikét. Ha a program úgy találja, hogy a kitöltő az adott kérdésnél egyetlen választ sem jelölt meg, akkor az N karaktert, ha többet is megjelöltnek vél, akkor a D karaktert írja a szám helyére.
Az értékelés során 2 pontot ér a mintaként adott fájlokra adott helyes válasz, további 3 pontot ér a mintafájlok ismételten beolvasott változatára adott, legalább 90 százalékban helyes válasz. Újabb 3 pont szerezhető tíz, közzé nem tett lap képére adott, legalább 80 százalékban helyes válasszal. A fennmaradó 2 pont a megfelelő dokumentációra jár.
Beküldendő egy tömörített s50.zip állományban a program forráskódja (s50.pas, s50.cpp, ...), valamint a program rövid dokumentációja (s50.txt, s50.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ó.
A feladathoz tartozó forrásfájlok: raw0105.zip raw0610.zip
A fájlok RAW formátumúak, benne minden kép 1169 képpont széles és 1653 képpont magas.
Az papír alapú űrlap a következő PDF dokumentum nyomtatásával készült: urlapminta.pdf
(10 pont)
Figyelem!
Az informatika feladatok megoldásait ne e-mailben küldd be! A megoldásokat az Elektronikus munkafüzetben töltheted fel.