Feladat: I.187 Korcsoport: - Nehézségi fok: -
Füzet: 2008/május, 294. oldal  PDF  |  MathML 
Témakör(ök): Feladat

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.

Havazáskor a hópihék egymásra rakódnak. Bizonyos magasságot elérve a hótömeg megcsúszik, és veszélyes lavina alakulhat ki. A megcsúszás jelensége minden apró szemcsés, por állapotú szilárd anyagnál megfigyelhető. A jelenséget vizsgáljuk meg egy általunk készített szimulációs programmal.
A talaj az egyszerűség kedvéért legyen sík, N×M cellára (3N,M100) felosztva. A szimuláció minden lépésében essen 1 hópihe valamelyik véletlenszerűen kiválasztott cellára. A valóságban a hópihék időben párhuzamosan esnek, de sok szimulációs lépés végrehajtásával ezt jól közelíthetjük.
A hóréteg vastagsága fokozatosan növekszik, és ezt számoljuk minden cellában. Ameddig a HM (4HM12) kritikus magasságot nem éri el a hó, addig különösebb változás nem történik. Ha a cellában a hópihék száma eléri a kritikus értéket, akkor 4 szomszédjának átad egy-egy hópihét. (A cella értéke 4-gyel csökken és a négy oldalszomszédjáé 1‐1-gyel nő.) Ennek hatására a szomszéd cellákban is megnő a hóréteg magassága és a kritikus magasság felett, az előbbiekhez hasonlóan azok is továbbadják a négy szomszédjuknak a hópihéket. Amennyiben a szomszéd cellában a magasság nem éri el a kritikus értéket, akkor az nem ad tovább és így a szomszédjait sem kell tovább vizsgálni. A vizsgált terület széléről ledőlő hó eltűnik. Ha az átadás több cellán keresztül végig vonul, akkor beszélhetünk megcsúszásról, és ha ez a terület nagy, akkor lavináról.
A program jelenítse meg minden hópihe leesése után a változást grafikusan. A jó megfigyelhetőség érdekében a cellákat 3×3-as, vagy 5×5-ös pixelekkel ábrázoljuk. Azokat a cellákat, amelyekben változás nem történt, színezzük egyforma színnel (háttérszín is lehet) és a megváltozott tartalmú cellákat egy másik színnel.

 
 

A szimuláció végrehajtása közben lépésenkénti és folyamatos üzemmódok közül lehessen választani. A program leállítását a felhasználó kezdeményezheti.
Beküldendő a program forráskódja (i187.pas, i187.cpp, ...), valamint a program rövid dokumentációja (i187.txt, i187.pdf, ...), amely tartalmazza a megoldás vázlatos leírását, és megadja, hogy a forrásállomány melyik fejlesztő környezetben fordítható.