Feladat: I.384 Korcsoport: - Nehézségi fok: -
Füzet: 2015/október, 423. oldal  PDF  |  MathML 

A szöveg csak Firefox böngészőben jelenik meg helyesen. Használja a fenti PDF file-ra mutató link-et a letöltésre.

Készítsünk alkalmazást egyszerű (hurok- és többszörös élek nélküli) gráfok szerkesztésére. A program legyen alkalmas legföljebb 20 csúcsot tartalmazó gráf vizuális szerkesztésére, valamint szöveges állományba mentésére és beolvasására.
Szerkesztéskor az üres rajzterületen történő kattintás jelentse egy új csúcspont fölvételét. Két csúcsra kattintás egymás után jelentse az elsőt a másodikkal összekötő (irányítatlan) él berajzolását, ha még nem voltak összekötve; illetve az él törlését, ha már össze voltak kötve. A jobb egérgombbal történő hasonló művelet jelentse irányított élek rajzolását és törlését. Csúcsot a fölötte lenyomva tartott egérgombbal lehessen mozgatni. A csúcsok kapjanak 1-től kiindulva sorszámot. Csúcsot törölni a csúcsra történő dupla kattintással lehessen. Ha egy csúcsot törlünk, akkor természetesen minden élét is töröljük, ugyanakkor minden nála nagyobb sorszámú csúcs száma csökkenjen eggyel. Így egy N csúcsú gráfban a sorszámok mindig 1-től N-ig terjedjenek. A csúcsokat ábrázoljuk egyszerű körként, a sorszámukat írjuk a kör belsejébe. Az éleket szakaszként rajzoljuk, az irányított éleket a szakasz végén nyíllal jelöljük. A programnak nem kell megoldania olyan megjelenítési problémákat, hogy csúcsok körei átfedik egymást vagy egy nem a csúcsba befutó élt. Tételezzük föl, hogy a programot egy ügyes felhasználó kezeli, aki igyekszik a gráf jó elrendezésére.
A program az M gomb megnyomására vagy a menüből kiválasztva a Mentés funkciót írja egy graf.txt szöveges állományba a gráf adatait. Az állomány első sorában a csúcsok száma (N) és az élek száma (E), valamint a rajzterület szélessége és magassága legyen egy-egy szóközzel elválasztva, a következő N sorban a csúcsok grafikus szerkesztéskor alkalmazott koordinátái (egész számpárok szóközzel elválasztva), majd a következő E sorban a gráf élei (egész számpárok szóközzel elválasztva) szerepeljenek. A program a B gomb vagy a Beolvasás funkció esetén törölje a munkaterület és olvassa be a graf.txt állományt további szerkesztésre.
A megoldáshoz a versenykiírásban szereplő programozási nyelveket és fejlesztőeszközöket használhatjuk, illetve kliens oldalon futó webes alkalmazásokat is elfogadunk.
Beküldendő egy i384.zip tömörített állományban a program forráskódja, valamint a program rövid dokumentációja, amely tartalmazza a megoldás rövid leírását, és megadja, hogy a forrásállomány melyik fejlesztő környezetben fordítható.