Az I. 223. feladat (2009. november) |
I. 223. Készítsünk szimulációs programot, amely síkbeli színes buborékok életét szemlélteti. A szimulációban látható buborékok egyszínű körlapok, amelyek egy \(\displaystyle 800\times 600\)-as képben mozognak, illetve egymásba alakulnak. A buborékok helyzete és sebessége egy-egy valós számpárral, sugara egy valós számmal, színe RGB kódolással bájt méretű számhármassal adható meg. A buborékokhoz tömeget is rendelünk, melynek nagysága a buborék sugarának négyzetével egyenlő, azaz annak képzeletbeli területével arányos. A buborékok a képben a sebességük alapján minden szimulációs lépésben elmozdulnak. Amennyiben a kép határain kívülre kerülnek, úgy az ellentétes oldalon azonos sebességgel folytatják útjukat, most már a kép belseje felé. Amikor két buborék először egymásba ér, akkor összeolvadnak, és kettőjük helyett egy új buborék keletkezik, amelynek
i) tömege a két találkozó buborék tömegének összege, azaz \(\displaystyle r_1^2 +r_2^2\);
ii) középpontja a két buborék középpontjának súlyozott közepe, azaz koordinátái:
\(\displaystyle \left(\frac{r_1^2 \cdot x_1 +r_2^2 \cdot x_2}{r_1^2 +r_2^2};\frac{r_1^2 \cdot y_1 +r_2^2 \cdot y_2}{r_1^2 +r_2^2}\right); \)
iii) sebességének koordinátái az impulzus-megmaradás alapján hasonló módon
\(\displaystyle \left(\frac{r_1^2 \cdot vx_1 +r_2^2 \cdot vx_2}{r_1^2 +r_2^2};\frac{r_1^2 \cdot vy_1 +r_2^2 \cdot vy_2}{r_1^2 +r_2^2}\right); \)
iv) míg színének R, G és B összetevői szintén az egyes színösszetevők tömegükkel súlyozott közepével számítandók ki. Amennyiben egy új buborék olyan méretű, hogy egy másik buborékba ér, úgy azzal szintén összeolvad az előző szabályok szerint.
A szimuláció kezdetén meglévő buborékok adatait a program a parancssor első argumentumaként megnevezett szöveges állományból olvassa, melynek minden egyes sora egy-egy buborék leírása szóközzel elválasztott megfelelő értékekkel a következő sorrendben: helyx helyy sebességx sebességy sugár vörös zöld kék.
Például:
Beküldendő a feladat megoldását tartalmazó forrás és projektállományok (az i223.exe és más, a fordító által generált kiegészítő állományok nélkül) egy tömörített mappában (i223.zip).
(10 pont)
A beküldési határidő 2009. december 10-én LEJÁRT.
A programokat az alábbi tesztállományokkal vizsgáltuk: teszt.zip.
Mintamegoldásként Szabó Attila pécsi, 9. osztályos tanuló Free Pascalban készült (i223.pas) és Balla Attila budapesti, 12. osztályos diák Delphiben készült (i223.zip) munkáját adjuk közre.
Statisztika:
8 dolgozat érkezett. 10 pontot kapott: Balla Attila, Barta 111 János, Nagy 111 Miklós, Szabó 928 Attila. 8 pontot kapott: 1 versenyző. 7 pontot kapott: 2 versenyző. 5 pontot kapott: 1 versenyző.
A KöMaL 2009. novemberi informatika feladatai