|
Grafikus szerkesztőprogram
A legegyszerűbb grafikus szerkesztőprogram mindössze egy M × N-es
téglalap alakú területtel dolgozik (1 ≤ M, N ≤ 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 (X, Y) 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. (X1, Y1) a
bal felső sarka, (X2, Y2) 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 (X, Y) 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 (X, Y) 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
I 5 6 L 2 3 A S one.bmp G 2 3 J F 3 3 J V 2 3 4 W H 3 4 2 Z S two.bmp X
letöltés szöveges állományként
A példa bemenethez tartozó kimenet
one.bmp OOOOO OOOOO OAOOO OOOOO OOOOO OOOOO two.bmp JJJJJ JJZZJ JWJJJ JWJJJ JJJJJ JJJJJ
letöltés szöveges állományként
|
|