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. Biliárdgolyók útvonalát vizsgáltuk az I. 298. feladatban. Adott egy négyzet alakú biliárdasztal, amelynek szélén a golyók tökéletesen rugalmasan ütközhetnek. A golyók kiterjedés nélküliek, egymással szintén tökéletesen rugalmasan ütközhetnek és az asztal egész koordinátájú pontjaiban állhatnak. Készítsünk programot i307 néven, amely elkészíti a paraméterek beolvasása után egy kétpattanásos golyóútvonal ábráját egy SVG típusú vektorgrafikus képállományba. A golyó egy adott koordinátájú pontból gurítva az adott koordinátájú golyót találja el. A golyó két falon pattanjon vissza és más golyóval történő ütközéstől eltekintünk. Ennek oka, hogy a tökéletesen rugalmas, centrálisan történő ütközésnek megfelelően az eltalált golyó az őt eltaláló golyó mozgásának irányában folytatja a mozgását. Ha egy golyó pont az asztal sarkát találja el, akkor önmagába verődik vissza és ez két visszapattanásnak számít. A program eredménye a biliárdasztal, a golyók és a kétpattanásos pálya ábrázolása szakaszokkal (nyilakkal) SVG állományban. SVG ábra generálása szerepelt az I. 243. feladatban, illetve az ábra szerkezetéről olvashatunk a http://svg.elte.hu/ címen. A grafikai elemek tulajdonságait (színüket, vonalvastagságukat stb.) tetszőlegesen állíthatjuk be. A program parancssori argumentuma legyen a kezdő feltételeket leíró adatállomány neve. A fájl első sorában () az asztal méretét, () a golyók számát adja meg. Az ezt követő sor a golyók koordinátáit, majd az utolsó sor a golyóindítás koordinátáit (), és a célgolyó koordinátáit írja le. A biliárdasztal bal alsó sarka az koordinátájú pont, és az 1. koordináta jobbra, a második koordináta felfelé nő.
Beküldendő egy tömörített i307.zip állományban a program forráskódja (i307.pas, i307.cpp, ) és rövid dokumentációja (i307.txt, i307.pdf, ), 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ó. |