![]() |
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 800×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 r21+r22;
ii) középpontja a két buborék középpontjának súlyozott közepe, azaz koordinátái:
(r21⋅x1+r22⋅x2r21+r22;r21⋅y1+r22⋅y2r21+r22);
iii) sebességének koordinátái az impulzus-megmaradás alapján hasonló módon
(r21⋅vx1+r22⋅vx2r21+r22;r21⋅vy1+r22⋅vy2r21+r22);
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
|