Középiskolai Matematikai és Fizikai Lapok
Informatika rovattal
Kiadja a MATFUND Alapítvány
Már regisztráltál?
Új vendég vagy?

Az I. 229. feladat (2010. január)

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)

A beküldési határidő 2010. február 10-én LEJÁRT.


Megoldásokról

Összességében a beküldött megoldások jól sikerültek. A feladat könnyűnek mutatkozott. A pontvesztések oka első sorban a figyelmetlenségből következő hiányosságok voltak. Többen az 5. alfeladat megoldásában tévedtek. Nem értelmezték precízen, hogy "a nem 0 körértékű találatok közül" kellett megszámolni az egyes síknegyedekbe eső találatokat. Ketten részfeladat megoldását felejtették ki, illetve a síknegyed meghatározásánál a relációs jeleket tévesztették el.

Mintamegoldás

Barta János (Salgótarján, Madách Imre Gimnázium 10. osztály) megoldását közöljük: i229.pas


Statisztika:

10 dolgozat érkezett.
10 pontot kapott:Balla Attila, Barta 111 János, Szabó 928 Attila.
9 pontot kapott:Horváth 135 Loránd, Janosov Milán, Nagy 111 Miklós, Pap 999 Dávid.
8 pontot kapott:2 versenyző.
7 pontot kapott:1 versenyző.

A KöMaL 2010. januári informatika feladatai