Fejlett Programozás

Kötelező programok listája

  1. Írj metaprogramot, ami kiszámítja az N-edik prímszámot!
  2. Írj meg egy tetszőleges dimenziójú tömböt tároló osztálysablont, és valósítsd meg rajta az összeadás, kivonás, konstanssal való szorzás, (és értékadás) műveleteket úgy, hogy ne keletkezzenek felesleges temporális tárolók a memóriában.
  3. Modellezz le egy húsüzemet, amely tetszőleges módon tud feldolgozni tetszőleges hústerméket. Pl. tud pácolni sonkát és csülköt, tud füstölni virslit és kolbászt, de akár sonkát is tud füstölni. A feldolgozási módok és a termékek köre könnyen bővíthető legyen, a húsüzembe ne legyenek belekódolva a konkrét feldolgozási módok és a termékek. Az implementáció a traits technikát alkalmazza.
  4. Valósítsd meg a dinamikus prioritásos sor adatszerkezetet. A tárolt adatok típusa sablonparaméterben érkezzen. Az adatok tárolasa bináris fával legyen megvalósítva. A bináris fa prioritás szerint rendezett legyen mélysegi keresés szempontjából. A push művelet szúrjon be egy elemet a prioritás szerinti helyre a fában. A pop művelet adja vissza a legnagyobb prioritásu elemet, majd törölje is a fából.
  5. Tervezz és valósíts meg egy olyan, sablonokon alapuló megoldást, ami lehetővé teszi C++-ban a new operátorral foglalt memória "automatikus" felszabadítását. (A megoldás lehet referencia-számoláson alapuló, szemétgyűjtő alapú, egyedi allokátort használó, stb. Több helyes megközelítés létezik, létezhet. Általában közös a megoldásokban, hogy T* helyett ptr jellegű struktúrákat használnak, és az így használható objektumok osztályainak valamiféle közös ősosztályból kell származniuk.) Írj egy egyszerű példaprogramot és adatszerkezetet (pl. gráf), ami bemutatja, hogy amennyiben egy több objektumból álló, egymásra hivatkozó struktúrára az utolsó "pointert" (prt) is megszüntetjük, akkor a struktúra minden objektuma automatikusan destruálódik.
  6. Trigonometriai függvények (sin, cos, tan, arcsin, arccos, arctan) közelítő értékének kiszámítása metaprogrammal. (Közelítő: a függvények zárt alakja általában $\sum_{n=0}^{\infty}$ van megadva. A metaprogramban természetesen nem végtelen számú összegzést kell elvégezni.)