Az S. 21. feladat (2006. november) |
S. 21. Egy pontszerű, tökéletesen rugalmasan ütköző golyó mozgását vizsgáljuk egy olyan téglalap alakú terepasztalon, amely sokszögeket tartalmaz. A golyót a terepasztal falának adott pontjából adott kezdősebességgel indítjuk. A golyó egyenesen halad, amíg az asztalon lévő sokszögek oldalával vagy csúcsával nem ütközik. Az oldalakkal való ütközéskor az oldalra merőleges sebességkomponens ellentétére változik. A csúcsokkal való ütközést úgy tekintjük, mintha a golyó a csúcsban találkozó két oldal mindegyikével ütközött volna. A golyó mozgását addig vizsgáljuk, amíg el nem éri a terepasztal egyik oldalát.
A terepasztalt és a sokszögeket koordináta-rendszerben írjuk le. Ezek leírása a program bemeneti szöveges állományában található. Az állomány első sora a terepasztal oldal-egyeneseit, második sora a golyó kezdeti helyét és sebességkomponenseit, minden további sora egy-egy sokszög csúcsainak egész koordinátáit tartalmazza. A bemeneti állomány üres sort vagy mást nem tartalmaz. Minden szereplő koordináta 1000-nél kisebb abszolút értékű egész szám.
Példa: A terepasztalt az x=-200, x=+100, y=-150, y=300 egyenletekkel meghatározott egyenesek határolják. A bemeneti állomány első sorában a -200 100 -150 300 számok szerepelnek szóközzel elválasztva.
A golyót a (-200;0) pontból indítjuk az (5;12) sebességvektorral. A bementi állomány második sorában szóközzel elválasztva a -200 0 5 12 számok szerepelnek.
A terepasztalon egy (-20;50), (0;-40) és (50;30) koordinátájú csúcsokkal meghatározott háromszög található. A bemeneti állomány egy sora szóközzel elválasztva a -20 50 0 -40 50 30 számokat tartalmazza. A sokszögek oldalait az egymás utáni csúcsok összekötésével kapjuk. Az utolsó csúcspontot a legelsővel összekötve zárjuk az alakzatot.
A program a bemeneti állomány nevét a standard bemenetről olvassa, tehát indítása S21 bemeneti.txt. A program feladata grafikusan szemléltetni a golyó mozgását a terepasztalon, és megadni annak a pontnak a koordinátáit, ahol először az asztal széléhez ér.
Beküldendő a program forráskódja (S21.pas, S21.cpp, ...), valamint a rövid dokumentációt tartalmazó S21.txt szöveges állomány.
(10 pont)
A beküldési határidő 2006. december 15-én LEJÁRT.
A feladat megoldásához koordináta-geometriai összefüggések pontos programozásával lehetett eljutni.
Két mintamegoldást mutatunk be: az egyik Windows környezetben a házi használatra ingyenes Microsoft VC++ Express változatával készült, Kezes Balázs érsekújvári diák munkája (megoldas1.cpp) és C++ nyelven készült; a másik Gilián Zoltán székesfehérvári tanuló FreePascal programja (gilianzoltan.pas).
Statisztika:
9 dolgozat érkezett. 10 pontot kapott: Csernai Kornél, Fehér András, Gilián Zoltán, Györök Péter, Kezes Balázs. 4 pontot kapott: 1 versenyző. 3 pontot kapott: 1 versenyző. 2 pontot kapott: 1 versenyző. 1 pontot kapott: 1 versenyző.
A KöMaL 2006. novemberi informatika feladatai