Pótzárthelyi feladatok (2004. dec. 20.)

1. ZH pótlása (C++)

1. Írjunk C++ programot egy lejtőn lecsúszó/gördülő test sebességének és megtett útjának kiszámítására a következők szerint:

• Súrlódás nélkül lecsúszó testre definiáljunk egy osztályt, melynek két virtuális függvénye határozza meg az adott időpontbeli sebességet és megtett utat.

• Súrlódás esetére (forgás nélkül) származtassunk az előbbi osztályból egy újabb osztályt, melyben az előbbi virtuális függvényeket felüldefiniáljuk.

• Gördülés esetére származtassunk le egy másik osztályt az első osztályból. Tegyük fel, hogy homogén gömb alakú golyó gurul le a lejtőn, ennek a tömegközépponton átmenő tengelyre vonatkozó tehetetlenségi nyomatéka

\frac{2}{5}MR^{2}

• Példányosítsuk mindhárom osztályt, de a főprogramban mindenütt az ősosztály mutatóját használjuk! A számítás elején kérjük be az adatokat, és ha súrlódás ill. gördülés esetével van dolgunk, az ősosztály mutatóját a megfelelő mutatóval tegyük egyenlővé (polimorfizmus lehetőségének felhasználása).

2. Írjunk C++ programot a Millikan-kísérlet leírására a következők szerint:

• Definiáljuk a töltés osztályt, melynek privát q tagját a konstruktor inicializálja, get() tagfüggvénye pedig visszaadja az értékét!

• Hasonlóan írjunk egy tömeg osztályt is, melynek konstruktora nem engedi, hogy a privát m tagja negatív értéket vegyen fel!

• Definiáljunk továbbá egy konstans erőterek esetére vonatkozó általános célú osztályt, amely a térerősség és valamely anyagi állandó értékét felhasználva megadja az erő értékét. Származtassuk le ebből az osztályból a homogén gravitációs és homogén elektromos térre vonatkozó osztályokat (mindkét esetben az ero() nevű függvény adja meg az erőt)!

• A homogén gravitációs és homogén elektromos térnek megfelelelő fenti osztályokból többszörös öröklődéssel származtassuk le a Millikankísérlet leírására alkalmas osztályt, mely a homogén elektromos és gravitációs tereken kívül egy, a sebességgel ellentétes irányú és 6πηrv nagyságú súrlódási erőtagot is figyelembe vesz. Aknázzuk ki a függvények túlterhelésében rejlő lehetőségeket!

• Alkalmazzuk ezt az osztályt a Millikan kísérlet modellezésére! A kondenzátor két D = 8 cm átmérőjű vízszintesen elhelyezett fémkorong, a lemezek távolsága d = 1 cm. A síkkondenzátor geometriai középpontjába kezdősebesség nélkül r = 10 μm átmérőjű ρ = 870kg/m^{3} sűrűségű és 10^{−15}C töltésű olajcseppeket juttatunk, és U = 1200V feszültséget kapcsolunk a kondenzátor lemezeire. A levegő dinamikai viszkozitása 20^{∘}C-on η = 1.81 × 10^{−5} \frac{kg}{m s}. Megfelelő numerikus algoritmussal vagy analitikusan oldjuk meg a mozgás differenciálegyenletét, az eredmény file-ban adjuk meg az út-idő adatokat, a kezdeti időponttól a lemezbe való becsapódás időpontjáig 10 ms lépésközzel.

2. ZH pótlása (Java)

1. Írjunk Java alkalmazást, mely egy (parancssorban) adott file első 10 byteját bemásolja egy másik (parancssorban megadott) file-ba és a file műveleteknél előforduló leggyakoribb hibák esetén saját kivételkezelőt futtat (nem létezik a forrásfile, valamelyik file-t nem tudja megnyitni, nem tud eleget olvasni belőle, vagy írni bele, stb.).

2. Írjunk Java alkalmazást két szál közötti adatcserére a következőképpen: Mindkét szálat elindítjuk. Az első szál elindításakor jelenjen meg egy grafikus felület beviteli szövegmezővel. A beírt szöveg után entert ütve a szöveget adja át a másik szálnak, amely csak ekkor jelenítsen meg egy ablakot, benne a kapott szöveggel.