Az I. 334. feladat (2013. december) |
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)
A beküldési határidő 2014. január 10-én LEJÁRT.
A versenyzők hétféle nyelven készült megoldást küldtek be. 5 C++, 3-3 Visual Basic és FreePascal, 2-2 C# és Java, 1-1 C és Lazarus.
A feladat összességében nem bizonyult nehéznek, bár a 7. részfeladatot csak kevesebb, mint a versenyzők fele tudta tökéletesen megoldani.
A 6. részfeladat egy függvény elkészítését írta elő, de többen jól láthatóan nem voltak tisztában a függvény programon belüli szerepével, így csak formailag tekinthető függvénynek az elkészült alkotás.
A 8. részfeladat egy 90 hosszú számsor véletlenszerű sorrendbe állítását kérte. Sokan sokféle módszerrel próbálkoztak. Kevesen alkalmazták azt az ismert módszert, hogy egy ciklus futtatunk 90-től 2-ig (ciklusváltozó n), egy számot választunk az [1,n] intervallumból, amely által megadott helyen lévő értéket az n. értékkel felcseréljük.
Az értékelés leírása: bingoertekeles.pdf
Az értékelés során használt fájlok: bingok.txt, bingon.txt
A beküldők közül ezúttal Tegzes Tamás munkáját emeljük ki: i334tegzes.pas, valamint érdekességképpen egy Python nyelven született, versenyen kívüli megoldást: bingo.py
Statisztika:
17 dolgozat érkezett. 10 pontot kapott: Csernák Tamás, Gercsó Márk, Kovács Balázs Marcell, Tegzes Tamás. 9 pontot kapott: Fehér Balázs, Fényes Balázs, Kelkó Balázs, Kovács 246 Benedek, Németh 123 Balázs, Uzonyi 000 Ákos. 8 pontot kapott: 1 versenyző. 7 pontot kapott: 2 versenyző. 6 pontot kapott: 2 versenyző. 5 pontot kapott: 1 versenyző. 4 pontot kapott: 1 versenyző.
A KöMaL 2013. decemberi informatika feladatai