Programozó versenyek

Informatikai versenyfeladatok, gyakorló feladatsor, 2012. február 20.

2012. március 1. 0:00 – 2012. április 1. 0:00

Grafikus szerkesztőprogram

A legegyszerűbb grafikus szerkesztőprogram mindössze egy M × N-es téglalap alakú területtel dolgozik (1 ≤ MN ≤ 250). A terület minden pixele rendelkezik egy színnel. A kép ezekből a pixelekből rajzolódik ki.

A feladatod egy olyan program írása, amely egy grafikus szerkesztőprogrammal végzett interaktív munkát szimulál.

A bemenet specifikációja

A bemenet a szerkesztőprogram parancsait tartalmazza, soronként egyet-egyet. Minden parancsot egy angol nagybetű ír le, amely a sor legelején található. Ha a parancsnak vannak paraméterei, akkor az összes paramétere ugyanebben a sorban lesz megadva, egymástól szóközzel elválasztva. A paraméterek a következők lehetnek:

  • a pixel koordinátái – két egész szám, az első az oszlop sorszáma az 1, …, M tartományból, a második a sor sorszáma az 1, … N tartományból úgy, hogy az (1, 1) pont a terület bal felső sarka;
  • egy szín – egy angol nagybetű; valamint
  • egy fájlnév – MSDOS 8.3 formátumban.

A szerkesztőprogram a következő parancsokat dolgozza fel:

Parancs Tevékenység
I M N Létrehoz egy új M × N-es területet. Az összes pixelt fehérre színezi (O betű).
C Törli a területet. A méret ugyanakkora marad. Az összes pixel fehérre változik (O betű).
L X Y C Az (XY) koordinátájú pixelt C színűre színezi.
V X Y1 Y2 C Egy C színű függőleges szakaszt rajzol az X oszlopban az Y1 és Y2 sorok között (beleértve őket is).
H X1 X2 Y C Egy C színű vízszintes szakaszt rajzol az Y sorban az X1 és X2 oszlopok között (beleértve őket is).
K X1 Y1 X2 Y2 C Egy C színnel kitöltött téglalapot rajzol. (X1Y1) a bal felső sarka, (X2Y2) a jobb alsó sarka a téglalapnak.
F X Y C Kitölti C színnel a régiót. A kitöltendő R régiót a következőképpen definiáljuk: Az (XY) pixel ehhez a régióhoz tartozik. A többi pixel akkor és csak akkor tartozik az R régióhoz, ha ugyanolyan a színe, mint az (XY) pixelnek, és van legalább egy közös oldala olyan pixellel, amely az R régióhoz tartozik.
S név Kiírja név fájlnévvel a képet a kimenetre.
X Befejezi a parancsok feldolgozását.

A kimenet specifikációja

Valahányszor a program az S név paranccsal találkozik, ki kell írnia a kimenetre a név fájlnevet és a rajz aktuális állapotát sorról sorra. Minden egyes sort pixelei színének sorozatával kell leírnia, ahogyan az a példa kimenetben is látható.

Hibák

A szerkesztőprogramnak nem kell foglalkoznia azokkal a sorokkal, amelyek az I, C, L, V, H, K, F, S, X karakterektől eltérő karakterrel kezdődnek; ilyenkor a következő parancs feldolgozásával kell folytatnia a tevékenységét.

Egyéb hibák esetén a program viselkedése megjósolhatatlan.

Példa bemenet

  1. I 5 6
  2. L 2 3 A
  3. S one.bmp
  4. G 2 3 J
  5. F 3 3 J
  6. V 2 3 4 W
  7. H 3 4 2 Z
  8. S two.bmp
  9. X
letöltés szöveges állományként

A példa bemenethez tartozó kimenet

  1. one.bmp
  2. OOOOO
  3. OOOOO
  4. OAOOO
  5. OOOOO
  6. OOOOO
  7. OOOOO
  8. two.bmp
  9. JJJJJ
  10. JJZZJ
  11. JWJJJ
  12. JWJJJ
  13. JJJJJ
  14. JJJJJ
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.