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

A 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: É=10-\sqrt{x^2+y^2}.

-- 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 (3\leN\le500) a lövések száma, a második sorában a céltábla közepének cx, cy (25,00\lecx;cy\le75,00) koordinátái találhatók. Az ezt követő N sorban a versenyző egyes találatainak lx, ly (0,00\lelx;ly\le100,00) koordinátái olvashatók.

Például:

65
28.95 31.60
23.67 30.18
35.12 50.27
30.45 34.67
...  

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 10-\sqrt{{(-5{,}28)}^2+ {(-1{,}42)}^2}= 4{,}53.

-- 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, ...''.

(x\ge0 és y\ge 0 \Rightarrow síknegyed =1) és (x\ge0 és y<0\Rightarrow síknegyed =4) és

(x<0 és y\ge 0\Rightarrow síknegyed =2) és (x<0 és y<0\Rightarrow 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)

megoldás, statisztika


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)

statisztika


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)

megoldás, statisztika


S-jelű feladatok

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

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.