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

A beküldési határidő 2009. december 13-án LEJÁRT.


I. 223. Készítsünk szimulációs programot, amely síkbeli színes buborékok életét szemlélteti. A szimulációban látható buborékok egyszínű körlapok, amelyek egy \(\displaystyle 800\times 600\)-as képben mozognak, illetve egymásba alakulnak. A buborékok helyzete és sebessége egy-egy valós számpárral, sugara egy valós számmal, színe RGB kódolással bájt méretű számhármassal adható meg. A buborékokhoz tömeget is rendelünk, melynek nagysága a buborék sugarának négyzetével egyenlő, azaz annak képzeletbeli területével arányos. A buborékok a képben a sebességük alapján minden szimulációs lépésben elmozdulnak. Amennyiben a kép határain kívülre kerülnek, úgy az ellentétes oldalon azonos sebességgel folytatják útjukat, most már a kép belseje felé. Amikor két buborék először egymásba ér, akkor összeolvadnak, és kettőjük helyett egy új buborék keletkezik, amelynek

i) tömege a két találkozó buborék tömegének összege, azaz \(\displaystyle r_1^2 +r_2^2\);

ii) középpontja a két buborék középpontjának súlyozott közepe, azaz koordinátái:

\(\displaystyle \left(\frac{r_1^2 \cdot x_1 +r_2^2 \cdot x_2}{r_1^2 +r_2^2};\frac{r_1^2 \cdot y_1 +r_2^2 \cdot y_2}{r_1^2 +r_2^2}\right); \)

iii) sebességének koordinátái az impulzus-megmaradás alapján hasonló módon

\(\displaystyle \left(\frac{r_1^2 \cdot vx_1 +r_2^2 \cdot vx_2}{r_1^2 +r_2^2};\frac{r_1^2 \cdot vy_1 +r_2^2 \cdot vy_2}{r_1^2 +r_2^2}\right); \)

iv) míg színének R, G és B összetevői szintén az egyes színösszetevők tömegükkel súlyozott közepével számítandók ki. Amennyiben egy új buborék olyan méretű, hogy egy másik buborékba ér, úgy azzal szintén összeolvad az előző szabályok szerint.

A szimuláció kezdetén meglévő buborékok adatait a program a parancssor első argumentumaként megnevezett szöveges állományból olvassa, melynek minden egyes sora egy-egy buborék leírása szóközzel elválasztott megfelelő értékekkel a következő sorrendben: helyx helyy sebességx sebességy sugár vörös zöld kék.

Például:

Beküldendő a feladat megoldását tartalmazó forrás és projektállományok (az i223.exe és más, a fordító által generált kiegészítő állományok nélkül) egy tömörített mappában (i223.zip).

(10 pont)

megoldás, statisztika


I. 224. Békés megye településeinek 2009. évi néhány adata áll rendelkezésre a honlapról letölthető bekes_forr.txt (tabulátorokkal tagolt, UTF-8 kódolású) szövegállományban.

1. Nyissuk meg táblázatkezelő program segítségével a bekes_forr.txt fájlt úgy, hogy az első beolvasott adat az A1-es cellába kerüljön. A táblát mentsük a táblázatkezelő saját formátumában i224 néven.

2. Az adattáblát rendezzük a települések neve szerint ábécé sorrendbe.

3. Alakítsuk ki és formázzuk a minta szerinti fejlécet és feliratokat a megfelelő cellákban. Az első sor celláiban lévő szövegek hosszúak, ezért a mintának megfelelően, 90o-kal elforgatva, sortöréssel jelenjenek meg. A feliratok félkövér betűstílusúak legyenek.

4. Az F2:F76 cellákban számítsuk ki három tizedes jegyre kerekítve az egyes települések népsűrűségét. A G2:G76 cellákban, hasonló módon három tizedes jegyre kerekítve határozzuk meg, hogy a településeken egy lakásban hányan élnek.

5. Határozzuk meg a C77:E77 cellákban a megye településeinek összes területét, népességét és lakásainak számát.

6. A J2:K3 cellákban a települések közül a legnagyobb és a legkisebb területe és a település neve jelenjen meg.

7. A települési adatokból végezzünk elemzést az alábbiak alapján:

a. Határozzuk meg a J7:L7 tartományban, hogy hány város, nagyközség és község van az adatforrásunkban.

b. Írassuk ki a J8:L8 cellákban, hogy a különböző típusú településeken hányan élnek összesen Békés megyében.

c. Számoljuk ki a J9:L9 tartományban, hogy településtípusonként mennyi a népsűrűség átlaga.

d. A J7:L9 cellákban a számolt értékeknek megfelelő mértékegységekkel jelenjenek meg az értékek.

8. Ábrázoljuk kör típusú diagramon a településtípusonkénti népességszámot. A diagram címe legyen ,,Jogállás szerinti népességszám''. Jelmagyarázat ne legyen. A diagram értelmezését segítsük elő azzal, hogy a körcikkek belsejében a településtípus nevét és népességszám százalékát íratjuk ki.

9. Formázzuk a táblázatot a minta alapján. A szegélyezés során a táblázat, az első és utolsó sor köré állítson vastag vonalat; illetve a többi elválasztó vonal dupla legyen. A számokra állítsunk be ezres tagolást.

Beküldendő a táblázatkezelő munkafüzet (i224.xls, i224.ods, ...), illetve egy rövid dokumentáció (i224.txt, i224.pdf, ...), amelyben szerepel a megoldáskor alkalmazott táblázatkezelő neve, verziószáma.

bekesforr.txt

(10 pont)

megoldás, statisztika


I. 225. E feladat a szöveges állományok gyors és hatékony feldolgozásának eszközét, az awk programozási nyelv alapszintű megismerését tűzi ki célul az alábbi feladat megoldásán keresztül.

A meccs.txt (honlapunkról letölhető) szövegfájl labdarúgó mérkőzések eredményeit tartalmazza. Soronként egy mérkőzés adatai láthatók (hazai csapat, vendégcsapat, hazai gólok száma, vendég gólok száma), az egyes értékeket egyetlen szóköz választja el egymástól.

Adjuk meg a következő feladatok megoldását awk nyelven.

1. Készítsük el a mérkőzések listáját a következő minta szerint: \ Alfa -- Béta: 1--2 (A mérkőzések megjelenítését a későbbiekben is ilyen módon várjuk el.)

2. Listázzuk ki a Gamma csapat mérkőzéseit.

3. Jelenítsük meg a Delta csapat otthoni győztes mérkőzéseit.

4. Adjuk meg, hány mérkőzést tartalmaz az állomány.

5. Írjuk ki a képernyőre, mekkora volt a legnagyobb különbségű vendéggyőzelem.

6. Számítsuk ki az Alfa otthon szerzett pontszámát. (A győzelemért 3, a döntetlenért 1 pont jár.)

7. Készítsünk statisztikát, amely kilistázza, hogy melyik eredmény hányszor fordult elő. Feltételezhető, hogy egyetlen csapat sem szerzett 9 gólnál többet. (Az eredményt a hazai csapat szemszögéből kell vizsgálni.)

Az első négy feladat megoldása 1-1, a további feladatok megoldása 2 pontot ér.

Mintafeladat: Adjuk meg, hány gól született a mérkőzéseken összesen. E feladat megoldását a következő parancs szolgáltatja:

awk "BEGIN { ossz=0 }{ ossz+=($3+$4) } END { print ossz }" meccs.txt

A parancs windows alatt működik, linux alatt a határoló jelek módosítására szükség lehet.

Az eszköz megismerését segítheti a következő címen található leírás:\ http://hup.hu/old/gawk/tobb/gawk_toc.html.

Beküldendő az egyes feladatok megoldását jól elkülönített módon tartalmazó i225.txt fájl, amelyben szerepeljen az operációs rendszer megnevezése és a megoldáskor használt awk verziószáma is.

meccs.txt

(10 pont)

megoldás, statisztika


S-jelű feladatok

A beküldési határidő 2009. december 10-én LEJÁRT.


S. 48. Adott néhány, kezdetben színültig töltött, ismert térfogatú edény. Egy lépésben az alábbiak egyikét tehetjük:

- egy edény teljes tartalmát kiöntjük,

- egy edényt újra színültig töltünk (akárhány alkalommal),

- egy edényből annyit töltünk át egy másik edénybe, hogy utóbbi színültig megteljen,

- egy edényből annyit töltünk át egy másik edénybe, hogy előbbi kiürüljön (de az utóbbi nem csordulhat túl).

Írjunk programot, mely meghatározza, hogy a fenti lépések ismétlésével -- tehát pontosan -- kimérhető-e, és ha igen, hogyan egy kívánt folyadékmennyiség. A program az adatokat a standard bemenetről olvassa, az eredményt a standard kimenetre írja.

A bemenet első sorában két, szóközzel elválasztott egész szám, az edények 2\leN\le4 száma, illetve a kimérendő 1\leV\le30 folyadékmennyiség szerepel. Az ezt követő N sorban rendre egy-egy egész szám áll, az (i+1)-edik sorban az i-edik edény 1\leCi\le30 űrtartalma.

A kimenet első sorába, ha a kívánt folyadékmennyiség előállítható valamelyik edényben, akkor az ehhez minimálisan szükséges L lépések száma, egyébként ,,-1'' kerüljön. Ha a folyadékmennyiség kimérhető, akkor az ezt követő L sor mindegyike két, szóközzel elválasztott számot tartalmazzon: az első számérték a forrásedény, a második a céledény sorszáma, illetve szám helyett ,,*'' karakter, ha az első vagy második típusú lépést végeztük. (A ,,*'' karakter lényegében egy végtelen kapacitású edényt szimbolizál.) Több megoldás esetén bármelyik megadható.

Beküldendő a feladat megoldását tartalmazó forrás és projektállományok (az s48.exe és más, a fordító által generált kiegészítő állományok nélkül), valamint a megoldás menetét bemutató dokumentáció egy tömörített mappában (s48.zip).

A kiadott tesztesetek be- és kimenetei letölthetőek innen.

(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.