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 2017. májusi 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ő 2017. június 12-én LEJÁRT.


I. 430. A foltvarrás (patchwork) során sok különböző foltot varrnak össze egy szövetté, általában minta alapján, és ebből takaró, kabát, táska stb. készülhet.

Készítsünk programot, amely egy téglalap alakú patchwork takaróban található összes színhez meghatározza a legnagyobb adott színű téglalap területét. A takarót egyszínű, egység méretű, négyzet alakú textíliákból varrták össze. A területeket az egységek számával adjuk meg, a színeket egy-egy karakterrel jelöljük.

A standard bemenet első sora a takaró folt-sorainak \(\displaystyle N\) (\(\displaystyle 1\le N\le 50\)), illetve -oszlopainak \(\displaystyle M\) (\(\displaystyle 1\le M\le 50\)) számát tartalmazza szóközzel elválasztva. Az ezt követő \(\displaystyle N\) sor, soronként \(\displaystyle M\) karakterrel a színeket jelenti.

A standard kimenet egy-egy sorába írjuk ki egy-egy szín karakterét, és a hozzá tartozó legnagyobb téglalap területét.

Beküldendő egy tömörített i430 állományban a program forráskódja, valamint a program rövid dokumentációja, amely tartalmazza a megoldás rövid leírását, és megadja, hogy a forrásállomány melyik fejlesztői környezetben fordítható.

(10 pont)

statisztika


I. 431. (É). Budapest népessége dinamikusan változik, van olyan kerület, ahol az elmúlt 10 évben a népesség több, mint 10%-kal nőtt vagy csökkent. Ebben a feladatban Budapest kerületeinek adatait fogjuk elemezni. A megoldás során ügyeljünk arra, hogy az alkalmazott képletek az adatok módosulása esetén is helyes eredményt adjanak.

1. Nyissuk meg a kerulet.txt tabulátorokkal tagolt UTF-8 kódolású szöveges állományt, és töltsük be a táblázatkezelő program egy munkalapjára az A1-es cellától kezdődően. Budapest kerületeinek statisztikai adatait az A5:F28 tartomány celláiban találjuk.

2. Határozzuk meg képlet segítségével az E oszlopban az egyes kerületek 2016-os népsűrűségét. Az eredményt függvény segítségével kerekítsük két tizedesjegy pontosságúra.

3. Az F oszlopban a kerületek 2007-es népességét látjuk. Képlet segítségével határozzuk meg a G oszlop celláiban, hogy hány százalékkal változott az egyes kerületek népessége 2016-ra a 2007-es adatokhoz képest. Jelenjen meg a H oszlop celláiban egy felkiáltójel, ha az eltérés meghaladja a 10%-ot.

4. Budapestet a Duna két részre: Budára és Pestre osztja. A B oszlop tartalmazza, hogy az egyes kerületek melyik oldalon vannak. Határozzuk meg a K6:L7 tartomány celláiban a két oldalhoz tartozó kerületek számát és együttes lakosságát.

5. Feltételes formázás segítségével emeljük ki az A5:H28 tartomány celláiban a budai oldal adatait sötétzöld, a pesti oldal adatait sötétkék betűszínnel.

6. Melyik kerület népsűrűsége a legnagyobb a pesti, illetve a budai oldalon? Válaszoljunk képlet segítségével a K10:L11 tartományban. A választ készítsük elő oldalanként a legnagyobb, illetve a legkisebb népsűrűség meghatározásával a K8:L9 tartományban.

7. Írjuk be az A3-as cellába egy kerület számát, pl. ,,X.'', és jelenítsük meg a cella értéke alapján, másolható függvény segítségével a kerület megfelelő adatait a B3:D3 tartomány celláiban.

8. Mely kerületek lakossága növekedett a legnagyobb mértékben? Határozzuk meg másolható képlettel az első három helyezettet a K14:K16 tartományban.

9. Formázzuk meg az A3:H28 tartomány celláit a mintának megfelelően.

10. Ábrázoljuk új munkalapon, pókhálódiagram segítségével a budai kerületek népességét a 2007-es, illetve a 2016-os évben. (Ne feledkezzünk meg a jelmagyarázatról sem.)

Beküldendő egy tömörített i431.zip állományban a megoldást adó táblázatkezelő munkafüzet és egy rövid dokumentáció, amely megadja a felhasznált táblázatkelő nevét és verzióját.

Letölthető fájl: kerulet.txt

(10 pont)

megoldás, statisztika


I. 432. A Hanoi tornyai gyakran használt mintapélda a rekurzió bemutatására. A feladat röviden összefoglalva a következő: adott három rúd. Az első rúdon \(\displaystyle N\) korong helyezkedik el, alul a legnagyobb, majd fölötte rendre a kisebbek. A másik két rúd kezdetben üres. A játék szabályai szerint az első rúdról az utolsóra kell átrakni a korongokat úgy, hogy minden lépésben egy korongot lehet áttenni, de nagyobb korong nem tehető kisebb korongra.

A játékot 1883-ban Édouard Lucas francia matematikus találta ki. Az ötletet egy legendából kapta, ami szerint a világ megteremtésekor egy 64 korongból álló Hanoi torony feladványt kezdtek el ,,játszani'' Brahma szerzetesei. A szabályok azonosak voltak a ma ismert Hanoi tornyai feladat szabályaival. A legenda szerint, amikor a szerzetesek végeznek majd a korongok átrakásával a harmadik rúdra, a kolostor összeomlik, és világunk megszűnik létezni. (Forrás: https://hu.wikipedia.org/wiki/Hanoi_tornyai.)

Készítsünk grafikus felületű programot, amely animációval szemlélteti a feladat megoldását. A program indulásakor a felhasználó kapjon lehetőséget a korongok számának megadására (\(\displaystyle 1 \le N \le 10\)).

Beküldendő egy i432.zip tömörített állományban a program forráskódja és dokumentációja, amely tartalmazza a megoldás rövid leírását, és megadja, hogy a forrásállomány melyik fejlesztői környezetben fordítható.

(10 pont)

megoldás, statisztika


I/S-jelű feladatok

A beküldési határidő 2017. június 12-én LEJÁRT.


I/S. 18. Egy ország úthálózata \(\displaystyle N\) városból és bizonyos városokat összekötő kétirányú utakból áll. Bármely városból bármely másik városba el lehet jutni közvetlenül vagy közvetve. Egy áruházlánc újonnan érkezett az országba, és szeretne pontosan \(\displaystyle N/2\) áruházat építeni úgy, hogy minden városból legfeljebb egy szomszédos városig kelljen utazni, ha náluk szeretnénk bevásárolni. Más szóval, ha egy városban nem épül áruház, akkor legalább egy szomszédos városban kell majd építeni. Írjunk programot, amely megadja, hogy mely városokban legyen áruház.

A standard bemenet első sora a városok \(\displaystyle N\) számát és az utak \(\displaystyle M\) számát tartalmazza. A következő \(\displaystyle M\) sor mindegyike egy-egy út által összekötött két város sorszámát tartalmazza (a városokat 1 és \(\displaystyle N\) közötti egész számokkal azonosítjuk).

A standard kimenet első és egyetlen sora pontosan \(\displaystyle N/2\) azonosítószámot tartalmazzon, az építendő áruházak városainak sorszámát. Több megoldás esetén bármelyik megadható.

Korlátok: \(\displaystyle 2 \le N \le 100\,000\), páros szám; \(\displaystyle 1 \le M \le 1\,000\,000\). Időlimit: 1 mp; memórialimit: 256 MB.

Minta bemenet (a \(\displaystyle \backslash\) jelek sortörést jelentenek) Minta kimenet
4 3 \(\displaystyle \backslash\) 1 2 \(\displaystyle \backslash\) 2 3 \(\displaystyle \backslash\) 3 4 2 3

Pontozás és korlátok: a programhoz mellékelt, a helyes megoldás elvét tömören, de érthetően leíró dokumentáció 1 pontot ér. A programra akkor kapható meg a további 9 pont, ha bármilyen hibátlan bemenetet képes megoldani a fenti korlátoknak megfelelően.

Beküldendő egy tömörített is18.zip állományban a program forráskódja és rövid dokumentációja, amely megadja, hogy a forrásállomány melyik fejlesztői környezetben fordítható.

(10 pont)

statisztika


S-jelű feladatok

A beküldési határidő 2017. június 12-én LEJÁRT.


S. 117. Márknak a következő kihívással kellene megbirkóznia: kap egy \(\displaystyle P\) (\(\displaystyle 1 \le P \le 5\)) valós számot és rengeteg számkártyát, amelyek mindegyikén az 1, 2, 3, 4, 5 számok egyike szerepel. Minden számkártyából elegendően sok áll a rendelkezésére. A feladata az, hogy a lehető legkevesebb számkártyát kiválasztva a rajtuk levő számok átlaga pontosan a megadott \(\displaystyle P\) szám legyen. Segítsünk Márknak a megfelelő számú számkártya kiválasztásában.

A standard bemenet első és egyetlen sora a \(\displaystyle P\) számot tartalmazza (\(\displaystyle P\) tizedesjegyeinek száma legalább 1 és legfeljebb 9).

A standard kimenet egyetlen sorban öt természetes számot tartalmazzon: az egyes, kettes, hármas, négyes és ötös számkártyák darabszámát. Ha több megoldás van, bármelyik elfogadható.

Az időkorlát 1 mp, a memórialimit 256 MB.

Példák:

1. bemenet1. kimenet2. bemenet2. kimenet3. bemenet3. kimenet
\(\displaystyle 5.0\)\(\displaystyle 0\) \(\displaystyle 0\) \(\displaystyle 0\) \(\displaystyle 0\) \(\displaystyle 1\)\(\displaystyle 4.5\)\(\displaystyle 0\) \(\displaystyle 0\) \(\displaystyle 0\) \(\displaystyle 1\) \(\displaystyle 1\)\(\displaystyle 3.20\)\(\displaystyle 0\) \(\displaystyle 0\) \(\displaystyle 4\) \(\displaystyle 1\) \(\displaystyle 0\)

Pontozás és korlátok: a programhoz mellékelt, a helyes megoldás elvét tömören, de érthetően leíró dokumentáció 1 pontot ér. A programra akkor kapható meg a további 9 pont, ha bármilyen hibátlan bemenetet képes megoldani a fenti korlátoknak megfelelően.

Beküldendő egy tömörített s117.zip állományban a program forráskódja és rövid dokumentációja, amely megadja, hogy a forrásállomány melyik fejlesztői környezetben fordítható.

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