Az I. 244. feladat (2010. szeptember) |
I. 244. Geometrikus elemekből álló és kevés színt tartalmazó ábrákat tömörítve tárolunk. Minden egyes sorról csak azt tartalmazza a tömörített állomány, hogy mi változott az előző sorhoz képest. Ha egy sor megegyezik az előzővel, akkor a tömörített állományban erről nem szerepel bejegyzés.
A honlapunkról letölthető zaszlo5.be állomány első sorában a kép sorainak száma, N (1N100) és oszlopainak száma, M (1M100) van. A következő sorok a kódolt képet tartalmazzák, soronként és azon belül oszloponként növekvő sorrendben. Az első szám a tömörítetlen kép megfelelő sorát jelenti, a második és a harmadik szám kezdő és végpozíciót, amelyen belül a negyedik nagybetű szerepel.
Például:
Készítsünk programot i244 néven, amely az alábbi problémákat oldja meg, a parancssor első argumentumaként megadott zaszloX.be állományban talált adatok felhasználásával.
Minden részfeladat megoldása előtt írja a képernyőre a feladat sorszámát (például 3. feladat: ).
1.] Olvassuk be és megfelelő adatszerkezetben tároljuk el a bemeneti adatállomány tartalmát.
[2.] Állítsuk elő és írjuk ki a képernyőre a tömörítetlen ábrát. A betűk között egy-egy szóköz legyen.
[3.] Írjuk ki, hogy melyik színből (betűből) hány darab van az ábrán.
[4.] A parancssor második argumentumaként megadott kimeneti zaszloX.ki állományba másik tömörítési módszerrel mentsük el az ábra kódját. Az N soros ábra tömörített állománya N sorból álljon. Minden sorban szóközzel elválasztva egy-egy színt megadó nagybetű és az egymás utáni ismétlődések száma következik.
Például a fenti dán zászló tömörítve:
[5.] A program kérje be az ábra egy pontjának koordinátáját és írja ki annak a színét és azt, hogy mekkora azonos színű összefüggő területhez tartozik. A színezés csak oldalszomszédos egyezőség esetén összefüggő.
[6.] Jelenítsük meg a képernyőn kétszeres méretben az ábrát, azaz az eredeti ábra minden pontjának, betűjének vízszintesen és függőlegesen is két-két betű feleljen meg.
Beküldendő a feladat megoldását tartalmazó forrás é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ó (i244.txt, i244.pdf, ...) egy tömörített mappában (i244.zip).
(A 2009. évi programozás OKTV 2. fordulójának feladat ötlete alapján)
(10 pont)
A beküldési határidő 2010. október 11-én LEJÁRT.
Megoldásokról
Összesen 15 megoldás érkezett a feladatra. Tartalmi és formai szempontból összesen három megoldás volt 100%-os. Néhány tipikusan előforduló hiányosság:
A be- és kimeneti állományok nevét a parancssor argumentumaként kellett volna megadni. Ezt többen nem így oldották meg. A megoldásokat több teszt bemeneti állománnyal próbáljuk ki. A javítást, a vizsgálatot nehezíti, ha minden futtatáskor be kell írni 1-2 állománynevet.
A program rövid dokumentációja is teljesen hiányzott néhány versenyzőnél, pedig a feladat külön felhívta erre a figyelmet. Fontosnak gondoljuk, hogy a megoldások elvét, algoritmusát megértsük, illetve a programok fordítási környezetét is illik megadni.
Az 5. részfeladat megoldása több versenyzőnél hiányzott. Ez nem véletlen, hiszen ehhez kellett a legtöbb ötlet. Megoldást jelenthet, ha a zárt görbék kifestéséhez hasonló rekurzív eljárást készítünk az azonos értékű tömbelemek számának meghatározásához.
Mintamegoldás zaszlo.dpr
Teszteléshez be- és kimeneti állományok: i244beki.zip
Statisztika:
15 dolgozat érkezett. 10 pontot kapott: Hoffmann Áron, Nagy 111 Miklós, Szabó 928 Attila. 9 pontot kapott: Barta 111 János, Gema Barnabás, Nagy 319 Vendel, Papp Gergely. 8 pontot kapott: 1 versenyző. 7 pontot kapott: 3 versenyző. 6 pontot kapott: 1 versenyző. 5 pontot kapott: 2 versenyző. 4 pontot kapott: 1 versenyző.
A KöMaL 2010. szeptemberi informatika feladatai