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 2013. decemberi 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ő 2014. január 10-én LEJÁRT.


I. 334. A bingo igen egyszerű társasjáték. A feladat az USA-ban és Ausztráliában népszerű 90-es bingón alapul. Ebben változatban a játékosok háromszor 5 számot kapnak. Ezen számötösök alapján határozható meg a három nyertes:

- az egyik, akinek valamely számötöséből először húztak ki minden számot (A);

- a második, akinek két számötöséből először húztak ki minden számot (B);

- a harmadik, akinek először húzták ki minden számát (C).

A bingo.txt fájl első sorában a számok (1-90-ig) kihúzásuk sorrendjében szerepelnek. Az azt követő sorokban egy-egy játékos számötösei (összesen 15 szám) vannak egy-egy szóközzel elválasztva. A számötösök: 1-5, 6-10, 11-15. számok a sorban. A fájl legfeljebb 100 játékos számait tartalmazza. A bemenet és a képernyőkép mintája letölthető honlapunkról.

Írjunk programot i334 néven, amely megoldja az alábbi feladatokat. Az egyes feladatok megoldása előtt jelenítsünk meg a képernyőn a feladat sorszámát tartalmazó szöveget (például: 5. feladat), a beolvasás előtt pedig a beolvasás tartalmára vonatkozó üzenetet (például: Add meg a versenyző számát!) Az ékezet nélküli kiírás is megengedett.

1. Olvassuk be a fájlban tárolt adatokat és őrizzük meg személyenként három számötöst tárolni képes adatszerkezetben.

2. Írjuk a képernyőre, hogy hány játékos volt.

3. Olvassunk be egy számot és jelenítsük meg a képernyőn, hogy hányadik húzásra választották.

4. Határozzuk meg azokat a számokat, amelyek egyetlen játékos lapján sem szerepeltek és jelenítsük meg a képernyőn egymástól szóközzel elválasztva.

5. Olvassunk be egy versenyző sorszámát és egy húzás sorszámát. Írjuk a képernyőre az adott versenyző minden számát úgy, hogy a már kihúzott számok mögött egy felkiáltójel jelenjen meg.

6. Készítsünk függvényt melyikutan névvel, amely egy számötös kapcsán meghatározza, hogy hányadik húzást követően húzták ki annak minden elemét. A húzott számokkal kapcsolatos változókat globális változóként is használhatjuk.

7. Határozzuk meg a nyerteseket. Egy személy többször is nyerhet. Egy-egy esetben több nyertes is lehet, de elegendő csak az egyiküket meghatározni. Soronként tüntessük fel a nyertes típusát (A/B/C), mellette a nyertes játékos(ok) sorszámát.

8. Állítsunk elő egy húzási sorrendet. A sorrend véletlenszerű legyen. A számokat a huzas.txt fájl első sorába írjuk, vesszővel tagoltan.

Beküldendő a program forráskódja (i334.pas, i334.cpp, ...), valamint a program rövid dokumentációja (i334.txt, i334.pdf, ...), amely megadja, hogy a forrásállomány melyik fejlesztő környezetben fordítható.

Letölthető fájl: bingo.txt

(10 pont)

megoldás, statisztika


I. 335. Minden korosztály szereti a társasjátékokat nyaraláskor vagy utazáskor. A Super Six kockajáték az újak közé tartozik. A játék legegyszerűbb formája csak a szerencsén múlik.

A játék szabályai: A játékosok egyenlő arányban pálcikákat osztanak el egymás között. Majd a kiválasztott kezdőjátékostól óramutató járásával megegyező irányban dobnak egymás után egy kockával. Egy kis henger fedelén egytől hatig számozott lyukak vannak. Abban az esetben, ha egy játékos olyan számot dobott, amihez tartozó lyuk még üres, beledughat a pálcikái közül egyet. Ha a dobott számhoz tartozó lyuk már foglalt, a játékosnak magához kell vennie az ott lévő pálcikát. A 6-os a szerencsedobás, mert ehhez olyan lyuk van, amin keresztül a pálcika a hengerbe esik és a játék végéig ott is marad. A hatos dobás után a játékos újra dobhat. Az a játékos nyer, akinek a pálcikái elsőnek fogynak el. (A Super Six játék logikai változatát két kockával és más szabályok szerint játsszák.)

Készítsük el a játék szimulációját táblázatkezelő program segítségével és a táblát mentsük a táblázatkezelő saját formátumában i335 néven.

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, hivatkozás használatára, de saját függvény vagy makró nem használható.

- Az M oszloptól jobbra végezhetünk segédszámításokat, amelyeket lássunk el magyarázó szöveggel.

A játékot hárman, Anna, Blanka és Csaba játsszák most. Az ő nevüket a C3:E3 tartomány celláiba írjuk be. A nevük alatti cellába a kiosztott pálcikák száma (3-9 darab) kerüljön.

A B2 cellába a kezdő játékos nevét írjuk be. A 4. sortól lefelé a játék szimulációját jelenítjük meg. A G:L oszlopban a henger fedelének foglaltságát és a hengerben lévő pálcikák számát írjuk ki dobásonként. Az üres lyukakat világos, a foglaltakat sötét mintázatú cellákkal ábrázoljuk.

A B oszlopban a kockadobásoknak megfelelő véletlen számok és az A5 cellától lefelé a szabályok szerint következő játékos nevét írjuk ki. A C:E oszlopban a játékosok pálcikáinak aktuális számát vezessük dobásonként.

A játék pillanatnyi állásának megjelenítését addig folytassuk, amíg az egyik játékos nem nyer. A szimulációnk 100 kockadobásig tegye lehetővé a játék adminisztrációját, de a nyertes állás alatt a cellák üresen jelenjenek meg. A győztes nevét az E1 cellában írjuk ki. Ha a 100 dobás alatt sem születik győztes, ami ritka, akkor megengedett a hibajelzés megjelenítése az  E1 cellában.

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

(10 pont)

megoldás, statisztika


I. 336. Az ideone.com lapon sokféle programozási- és scriptnyelven írott utasítássor futtatható. Mint minden online megoldásnak, ennek is vannak előnyei és hátrányai. Az általunk ismert, de legfeljebb két nyelv segítségével mutassuk be a használat módját, a felfedezett előnyöket és hátrányokat, korlátokat. A bemutatás 5-7000 értékes karaktert (szóközök nélküli hossz) tartalmazzon, amelybe a felhasznált programrészletek nem számítanak bele.

Beküldendő tömörített állományban (i335.zip) a képekkel illusztrált leírás (i335.pdf), és a leírásban szereplő programok/programrészletek ezen környezetben futtatható forráskódja.

(10 pont)

megoldás, statisztika


S-jelű feladatok

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


S. 85. Adott egy N\le 100\;000 darab pozitív egészből álló sorozat: 1\le a_i \le
1\;000\;000\;000. Ennek a sorozatnak keressük az értékes részsorozatait. Egy részsorozat akkor értékes, ha összefüggő és a centrális eleme nem kisebb egy adott C (1\le C\le 1\;000\;000\;000) korlátnál. Egy részsorozat centrális elemét a következőképp definiálhatjuk: ha páratlan elemszámú, akkor nagyság szerinti sorrendben a középső elem, ha páros elemszámú a sorozat, akkor a középső két elem közül a nem kisebb. Például a {9,2,1,6} sorozatnak a 6, és a {4,9,5} sorozatnak az 5 a fent definiált rendezés utáni középső eleme. Mivel egy sorozathoz általában nagyon sok értékes részsorozat tartozhat, így csak ezek számára vagyunk kíváncsiak.

A program olvassa be a standard input első sorából N-et és C-t, majd a következő sorból a sorozat elemeit, és írja a standard output első és egyetlen sorába az értékes részsorozatok számát.

Magyarázat: a következő sorozatok értékesek: {10}, {6}, {10,5}, {5,6}, {6,2}, {10,5,6}, {10,5,6,2}.

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 az 1 mp futásidőkorláton belül.

Részpontszámok a következőkre kaphatóak:

- a program N\le200-ra megoldást ad;

- program N\le2000-re megoldást ad.

Beküldendő egy tömörített s85.zip állományban a program forráskódja (s85.pas, s85.cpp, ...) az .exe és más, a fordító által generált állományok nélkül, valamint a program rövid dokumentációja (s85.txt, s85.pdf, ...), amely a fentieken túl megadja, hogy a forrás mely fejlesztői környezetben fordítható.

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