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 2011. 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ő 2011. december 12-én LEJÁRT.


I. 277. Adottak a  helyforr.dat állományban Magyarország településeinek neve, földrajzi koordinátái és lakosainak száma.

Készítsünk programot i277 néven, amely a képernyőn, adott téglalapban a településeket ponttal ábrázolja és a tízezernél nagyobb lélekszámúaknál a lakosságszámot kifejező méretű kört vagy négyzetet rajzol.

Minta:

A program a települések földrajzi koordinátáit, a lélekszámot és a település nevét fájlból olvassa be. A fájl első sora a települések számát (n), a térkép, azaz az ábrázolás téglalapjának vízszintes (dx) és függőleges (dy) méretét (256\ledx,dy\le1024) tartalmazza. Az ezt követő n darab sorban a települések adatai szerepelnek. A sorok első adata a hosszúsági, a második a szélességi koordinátákat tartalmazza szögperc mértékegységben. A harmadik adat a település lélekszámát adja meg, a negyedik pedig a nevét ékezetmentesen.

A dx és dy oldalú téglalapban a településeket jelenítsük meg egy-egy ponttal. A gömbi koordinátákat tekintsük X - Y koordinátáknak. Így Magyarország településtérképe fog kirajzolódni.

A tízezer lakosnál nagyobb lélekszámú településeket körrel vagy négyzettel emeljük ki. A jelölés középpontja a település földrajzi koordinátájára illeszkedjen. A méret fejezze ki a lakosságszámbeli eltérést. Budapest lélekszáma kiugró, ebben az esetben a jelölés nagysága legyen önkényes, a főváros utáni legnagyobb városhoz tartozó jelölés méretének 1,5-szerese.

Beküldendő egy tömörített i277.zip állományban a program forráskódja (i277.pas, i277.cpp, ...), valamint a program rövid dokumentációja (i277.txt, i277.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. 278. A fosszilis energiahordozók mennyiségének csökkenése ráirányította a figyelmet a földi természet fontos nyersanyagaira, többek között az édesvízre is. Bár az egyes folyók vízhozamát és vízállását már évtizedek óta mérik, az adatokat eddig csak a vízügyi szakemberek használták. A környezetvédelem azonban egyre fokozza a fontosságukat. Ebben a feladatban a Duna 2009-ben és 2010-ben Budapesten mért vízállását elemezzük.

A honlapunkról letölthető a vizallas.txt tabulátorokkal tagolt, UTF-8 kódolású szövegállomány, amely a mérési adatokat tartalmazza.

A megoldás során vegyük figyelembe a következőket:

- A megoldás során törekedjünk képlet, függvény és hivatkozás használatára.

- A megoldás során az R oszloptól jobbra, illetve a 78.  sor alatt végezhetünk segédszámításokat.

1. Nyissuk meg táblázatkezelő program segítségével a vizallas.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 i278 néven. A táblázat első oszlopa az évek és a napok sorszámát tartalmazza, a B:M oszlopokban az egyes hónapok rövidítése és a mért vízállásadatok találhatók.

2. Az E72 cellában adjuk meg, hogy hány hónapban volt nagyobb a Duna havi átlagos vízállása 2010-ben, mint 2009-ben.

3. Az E73 cellában adjuk meg, hogy 2009-ben melyik volt a tizedik legnagyobb mért vízállás. Számítsunk arra, hogy a mért adatok között akár egyezők is lehetnek.

4. Az E74:E75 cellában adjuk meg, hogy melyik év melyik hónapjában volt a legnagyobb a vízszintingadozás.

5. A Kossuth kirándulógőzös merülése 200 cm. Ha a vízállás ennél kisebb, a hajó nem indulhat el a kikötőből. Az E76-os cellában adjuk meg, hogy a vizsgált időszakban, a hajózási szezonban (március 21-től október 15-ig) hány nap kényszerült a Kossuth a kikötőben vesztegelni.

6. A P4-es cellába írjunk olyan kifejezést, amely a P1, P2 és P3 cellába írt adatokhoz meghatározza az aznapi vízállást, illetve az ,,Érvénytelen dátum'' szöveget jeleníti meg, ha ahhoz nincs adatunk. A P2 cellába a hónap nevét a táblázatban található hárombetűs rövidítéssel írjuk be.

Például: ha P1: 2010, P2: ,,FEB'' és P3: 11, akkor a P4 cellában a 154-es értéket jelenítsük meg.

Ha a három felette lévő cella közül bármelyik üres, a P4 cella is legyen üres.

7. Készítsünk diagramot 2009. és 2010. júliusi vízállásokról az alábbiak lapján:

a. A diagram fajtája grafikon (vonaldiagram) legyen.

b. A diagramot új munkalapra hozzuk létre.

c. 2009 grafikonja legyen vastag piros, 2010-é pedig vastag kék vonal.

d. A diagramra húzzuk be a vékony piros (2009.) és vékony kék (2010.) vonallal a havi átlagos vízállást. Amennyiben az adatok változnának, akkor ezt a diagram kövesse.

e. A jelmagyarázat a diagram alá kerüljön, és tüntessük fel benne az átlagok magyarázatát is ,,2009. júliusi átlag'', illetve ,,2010. júliusi átlag'' szöveggel..

f. A diagram címe ,,Júliusi vízállások'' legyen.

8. Az eredeti munkalapon az évszámokat és a hónapokat tartalmazó cellák legyenek félkövér betűstílusúak és középre igazítottak.

9. A kiszámított értékeket tartalmazó cellák háttérszíne legyen sárga.

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

Minták:

(10 pont)

megoldás, statisztika


I. 279. A www.facebook.com weboldalhoz több IP cím is tartozik, melyek időről-időre változnak. Erről könnyen meggyőződhetünk: adjuk ki parancssorban az nslookup www.facebook.com utasítást néhányszor egymás után. Látni fogjuk, hogy akár egy percen belül is két különböző eredményt kapunk.

Vizsgáljuk meg a weboldal IP címeinek változását, és készítsünk róluk egyszerű statisztikát. A munkánkat Linux operációs rendszer alatt végezzük, egy olyan gépen, amely lehetőleg folyamatosan internet kapcsolattal rendelkezik. Amennyiben a gépre nem kívánunk külön partícióban Linuxot telepíteni, akkor használjunk CD-ről bootoló Live rendszert (lehetőségek: www.livecdlist.com), vagy Windowsra is telepíthető, és a megoldás után egyszerűen eltávolítható változatot (pl. wubit és Ubuntu Linuxot).

Az adatok gyűjtéséhez készítsünk shell scriptet facebook.sh néven, és oldjuk meg, hogy az operációs rendszer rendszeresen, egy perces időközönként lefuttassa. A script feladata legyen, hogy Unix parancsok fölhasználásával lekérdezi a www.facebook.com cím aktuális IP címét, illetve az aktuális dátumot és időt, majd a kapott eredményt soronként egy facebook.out kimeneti állományba írja. A szöveges állomány egy sora legyen az aktuális dátum, az aktuális óra és perc, valamint az IP cím egymástól tabulátor karakterekkel elválasztva: 2011.10.16 \to 10:23 \to 213.46.246.53.

Az adatokat tartalmazó állomány alapján készítsünk facebook.stat néven szöveges állományt, amely soronként egy-egy IP címet tartalmaz, majd a cím előfordulásának számát és végül az egyes előfordulások között eltelt időtartamok átlagát percre kerekítve. Ha egy IP cím csak egyszer szerepelt az adatok között, akkor az utolsó érték zérus legyen. Az állományt rendezzük az IP címek szerint növekvő sorrendbe, az egyes értékek itt is tabulátorokkal legyenek elválasztva. A statisztikát tartalmazó állományt egy fstat.sh script hozza létre.

A megoldáshoz csak a Linux operációs rendszer segédprogramjai és a script parancsok használhatók. Amennyiben szükséges, a parancsok további állományokat is létrehozhatnak. Legalább négyórányi adatot gyűjtsük és értékeljünk ki.

Beküldendő egy gzip tömörítővel csomagolt i279.gz állomány, amely tömörítve tartalmazza a kért scripteket és szöveges állományokat, valamint egy idozites.txt állományt, amelybe leírjuk, miként sikerült megvalósítani a percenkénti futtatást.

(10 pont)

megoldás, statisztika


S-jelű feladatok

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


S. 66. Villámváros különös természeti adottságokkal rendelkezik. Nap mint nap rengeteg furcsa villám csap le házaira: egy-egy ilyen villám egyszerre mindig két házat talál el. Az idők során a lakók rájöttek, hogy ha bizonyos házakat villámvezetékkel kötnek össze úgy, hogy bármely két ház között a vezetékek mentén haladva pontosan egy útvonal legyen, illetve minden házba egy (gyakorlatilag végtelen kapacitású) akkumulátort szerelnek, a villámokkal biztosítani tudják a város elektromosenergia-ellátását. Amikor ugyanis a rendszerbe egy villám csap, a két eltalált ház közötti villámvezeték-útvonalon minden akkumulátor egyenlő mértékben feltöltődik.

A polgármester szeretne egy jelentést kapni a hónap végén arról, hogy melyik ház mennyi energiát nyert a villámokból. Írjunk programot, amely a házak közötti összeköttetések, illetve a villámok célpontjai és energiái ismeretében elkészíti ezt a jelentést.

A standard bemenet első sorában a házak 1 \le N \le 50\;000 száma szerepel, a következő N-1 darab sorban pedig rendre két olyan ház sorszáma (egy-egy szóközzel elválasztva), amelyek között közvetlen villámvezetékes összeköttetés van. A következő sorban a megfigyelt villámok 1 \le Q \le 50\;000 száma található. Az ezt követő Q darab sor mindegyike három, szóközzel elválasztott egész számot tartalmaz: a villám Ai és Bi célpontjait, illetve az egyes házakra jutó 1\leCi\le100 energiáját (azaz az Ai és Bi házakat összekötő villámúton minden akkumulátor Ci többletenergiát kap).

A standard kimenetre pontosan N darab sor kerüljön: az i. sorba az i. ház által összegyűjtött energia.

A maximális pontszám eléréséhez a programnak a legnagyobb méretű bemeneten is legfeljebb 3 másodperc alatt le kell futnia.

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

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