Házi feladat

A félév során kötelező egy nagy házi feladat önálló megoldása. A feladat szabadon választott. Lehet a lenti listából is választani, vagy azokhoz hasonló nehézségű, az elvárásoknak megfelelő saját problémák is megoldhatóak. A választást mindenképpen jóvá kell hagyja a laborvezető.

A bordó dőlt betűvel

címzett feladatok csak a nagyon informatikus beállítottságúaknak ajánlottak.

Követelmények

A nagy házi feladat a következő követelményeknek kell megfeleljen:

Formai követelmények:

Ha valakinek gondja adódik a pdf fájl előállításával, javasolt a CutePDF pdf készítő használata. Telepítés után megjelenik egy fiktív nyomtató; arra nyomtatva készül a PDF fájl.

Megjelenítés – grafikus, szöveges képernyőhöz segédlet

A házi feladatnak nem követelménye a grafikus megjelenítés. Aki összetettebb konzolos felületet szeretne csinálni (pl. aknakereső, tetris), használhatja az econio-t, amely a konzol képernyő kezelését segítő függvényeket tartalmaz (színek beállítása, adott pozícióra ugrás stb.) Ez egyszerűbb játékokhoz, teljes képernyőn futó programokhoz jól használható Windows alatt is.

A grafikus programokhoz pl. a platformfüggetlen SDL könyvtárat lehet használni. Infoc portálon elérhető egy rövid útmutató a telepítéshez és a használathoz.

Értékelési szempontok

Automatikusan elutasításra kerül


Pontozás (22 pont)

Határidők (2 pont)

Programkód minősége (7+7 pont)

Dokumentáció minősége (6 pont)


Minimum 250 kódsoros programot várunk, minden hiányzó 50 sorért 5 pont levonás jár. Normál sűrűségű, vagy a laborvezető által olyanná alakított kódolás esetén, a megjegyzéseket és sormintákat (ismétlődő kódrészek) figyelmen kívül hagyva.


Értékelés

11 pont alatt elégtelen. 11-13 elégséges, 14-16 közepes, 17-19 jó, fölötte jeles.

Matematikai jellegű programok

Ragadozó-préda

Készíts menüvezérelt C programot, mely a klasszikus ragadozó-préda (rókák és nyulak) problémát szimulálja. A modell konstansait egy fájlban tárold, és lehessen a programból változtatni őket. A modell leírását lásd a http://home.messiah.edu/~deroos/CSC171/PredPrey/PPIntro.htm címen. Legyen lehetőség:

Életjáték

Készíts menüvezérelt C programot, mely a Conway féle LIFE (életjáték) modellt valósítja meg. Részletek a http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life címen. A program legyen képes:

Egész aritmetika

Készíts függvénykönyvtárat, amely nem korlátozott ábrázolási tartományú egész aritmetikát valósít meg – vagyis képes tetszőlegesen nagy, akár 1000 számjegyű egész számokkal is számolni. A függvénykönyvtár legyen képes a négy alapművelet elvégzésére – amelyekkel alkotott kifejezéseket a billentyűzetről vagy fájlból vár. (Ezek lehetnek fordított lengyel jelöléssel adottak is.)

Valós aritmetika 1

Készíts függvénykönyvtárat, amely nem korlátozott ábrázolási tartományú valós aritmetikát valósít meg – vagyis képes tetszőlegesen nagy, akár 1010000 nagyságú, ill. tetszőlegesen kicsi pl. 10-10000000 számokkal is számolni. Az értékes jegyek száma lehet értelmesen választott konstans (pl. 30). A függvénykönyvtár legyen képes a négy alapművelet elvégzésére – amelyekkel alkotott kifejezéseket a billentyűzetről vagy fájlból vár. (Ezek lehetnek fordított lengyel jelöléssel adottak is.)

Valós aritmetika 2

Készíts függvénykönyvtárat, amely nem korlátozott pontosságú valós aritmetikát valósít meg – vagyis képes tetszőlegesen sok, akár 1000 decimális jeggyel adott számokkal is számolni. A karakterisztikában 10 maximális kitevője lehet egy értelmesen választott konstans (pl. 10000). A függvénykönyvtár legyen képes a négy alapművelet elvégzésére – amelyekkel alkotott kifejezéseket a billentyűzetről vagy fájlból vár. (Ezek lehetnek fordított lengyel jelöléssel adottak is.)

Numerikus integráló

Készíts C programot, mely a felhasználó által megadott függvényt numerikusan integrálja. Gondosan tervezd meg az adatstruktúrát! Tervezz egy megfelelő bemeneti nyelvet. A program legyen képes:

A program legyen képes felhasználó által megadott kifejezéseket eltárolni és feldolgozni! (Ezek lehetnek fordított lengyel jelöléssel adottak is.)

Játékok

Amőba

Készíts menüvezérelt C programot, mely amőbát játszik. A program legyen képes:

Reversi

Írj reversi játékot, amelyben a gép ellen lehet játszani! A program legyen képes:

Scorch

(Grafikus program.) Egymásra lövöldözős, ágyús játék. A program legyen képes:

Sokoban

A játékban egy figurával ládákat kell tologatni a képernyőn; úgy, hogy azok a megfelelő helyre kerüljenek. A pálya viszont olyan, hogy könnyű betolni olyan helyre a ládákat, ahonnan már elmozdítani nem lehet őket.

Olvasd a pályák leírását fájlból! Vezess dicsőséglistát! (Melyik játékos, melyik pályát, hány lépésből tudta megoldani?) Ez könnyedén megoldható szöveges képernyőn is.

Hexxagon

  _
 /*\_
 \_/o\
 / \_/
 \_/

Táblás játék. A pálya hatszögletű elemekből áll. Mindkét fél néhány bábuval indul. Minden lépésben a játékosok valamely bábuval a szomszédos helyre terjeszkedhetnek (ilyenkor nő a bábuk száma), vagy kettővel arrébb ugorhatnak (ilyenkor nem) egy szabadon választott bábujukkal. Az újonnan lerakott bábu mellett az ellenség bábui színt váltanak; a lépő játékos megnyeri azokat. YouTube videó itt: http://www.youtube.com/watch?v=_E10ydLaLE8. Ha nem is lesz szépen, de ez is megoldható szöveges képernyőn, lásd a rajzot.

Írj programot, amelyben a gép különféle stratégiákkal játszik a felhasználó ellen!

Töltés-játék

(Grafikus program.) A játék a következő. A program a képernyő adott pontjából, adott irányban kilő egy pozitív töltéssel rendelkező részecskét. A játékos számára adott néhány másik töltés, amelyeket úgy kell elhelyeznie a képernyőn, hogy a mozgó töltés egy megadott célba jusson. Ezek az elhelyezendő töltések lehetnek különböző erősségűek, polaritásúak stb. Közben a pályán lehetnek fix töltések, falak stb.

A program számoljon pontszámot a játékos számára (pl. hány próbálkozásra sikerült megoldania a pályákat), és ez alapján tartson nyilván dicsőséglistát is, amelyet fájlba ment és vissza is olvas!

Kalandjáték

Készíts szöveges kalandjáték programot, amely

Kígyó játék

Készíts kígyó játékot, ahol a kígyók ha megeszik a véletlenszerűen elhelyezett étket, akkor nő a méretük. Ha önmaguknak, vagy egymásnak ütköznek, az a játék végét jelenti. A program legyen képes:

Aknakereső játék

Készíts aknakereső játékot. A pálya téglalap alakú, cellákból álló tábla. Egy cellára rálépve megtudhatjuk, hogy az adott cellán van-e akna (ebben az esetben felrobbanunk – vége a játéknak), illetve, hogy hány szomszédos cellán van. Legyen lehetőség:

További játékok

Készíts egyszerű, alfanumerikus képernyőn futó játékprogramot (PacMan, Tetris, stb.) A program legyen képes:

Akasztófa

Az akasztófás és a szótáras programokhoz használható szólisták: szotar.zip.

A program a szavak listájából gondol egy feladványt, amelyet a felhasználónak ki kell találnia. Betűket tippel, amelyek ha a gondolt szóban szerepelnek, a gép felfedi őket. Pl. ha a gondolt szó ökör, a tippek k és r, akkor a felhasználó ezt látja: _k_r. A program legyen képes:

A szavak tömbben történő tárolása ennél a feladatnál nem elfogadható!

Gonosz akasztófa

Az alapfelállás a fentihez hasonló, de itt a gép nem kötelezi el magát egyetlen egy szó mellett sem. A felhasználó tippjei alapján mindig úgy szűkíti a szóba jöhető szavak halmazát, hogy a legkevesebb segítséget adjon a felhasználónak. Pl. a felhasználó ezt látja: _k_r, és az „akár” szóra gondol. Ezért tippel egy a-t, mire a gép azt mondja, hogy veszített, mert a szó, amire gondolt, az „ökör” volt. Miközben igazából eddig nem is gondolt egyetlen szóra sem.

„Számítástechnika, algoritmusok” feladatok

Huffman kódoló

Készíts parancssorból hívható C programot, amely a Huffman kódoló algoritmust felhasználva tömörít fájlokat. Részleteket lásd a http://en.wikipedia.org/wiki/Huffman_code címen. Tervezz megfelelő fájl formátumot a tömörítés kódtáblázatának tárolására. A program legyen képes:

HTML alapú tartalommenedzser

Készíts programot, amely egy adott honlap tartalommal való feltöltését segíti oly módon, hogy egy a programhoz kifejlesztett script-nyelv segítségével a felhasználónak csupán az oldalon megjelenítendő adatokat, szövegeket, menüpontokat kell megadnia, a megjelenítéssel és a HTML-nyelvű kóddal nem kell törődnie – azokat a program automatikusan generálja a script alapján.

Pascalból C-be

Készíts parancssorból hívható C programot, amely egyszeru standard Pascal programokat fordít C nyelvre. A program legyen képes az alábbi Pascal fordulatok kezelésére:

Útvonaltervező

Készíts útvonaltervező programot!

A program legyen képes egy térkép szöveges reprezentációját fájlból beolvasni és az ebből felépített adatstruktúra alapján két megadott helyszín között útvonalat tervezni. Lehessen megadni az útvonaltervezés szempontját is (leggyorsabb, legrövidebb, stb)!

Buszjáratok

Készíts programot, amely egy közlekedési társaság buszjáratait képes nyilvántartani, és a menetrendek alapján útvonalakat felépíteni! Elvárások a programmal szemben:

Morze

Készíts parancssorból hívható C programot, amely Morze szövegeket kezel. Morze ábécét találsz pl. a http://morsecode.scphillips.com/morse2.html címen. A program tudjon:

Tömbös, listás megoldás nem elfogadható!

Szimulációk

Ágyú

Készíts parancssorból hívható C programot, mely a kívánt távolsághoz kiszámítja a kilövési szöge(ke)t. A légellenállás nem elhanyagolható! Az ágyú és a lövedék adatait file-ban tárold! A program legyen képes:

Gázok

Készíts menüvezérelt C programot, amely gázok keveredését szimulálja mikroszkópikusan, 2D-ban. Egy fallal két részre választott edény egyik felébe Na darab A gáz-, másik felébe Nb darab B gázmolekulát teszünk (véletlenszerű induló helyzetbe). Az egyes molekulák induló sebességét is sorsoljuk. A falon változtatható szélességű rés van. A programban legyen lehetőség:

Tömegvonzás 1

Készíts parancssorból hívható C programot, amely egy 2D-s naprendszert modellez (alapegyenlet+iteráció). Egy központi égitest körül bolygók keringenek. A bolygók nem hatnak egymásra. A naprendszer adatait file-ban tárold. A programban legyen lehetőség:

Tömegvonzás 2

Készíts parancssorból hívható C programot, amely egy 3D-s, n darab nem pontszerű égitestből álló rendszert modellez (alapegyenletek+iteráció). A rendszer adatait file-ban tárold. A programban legyen lehetőség:

Inga

Készíts parancssorból hívható C programot, mely egy fonálinga mozgását szimulálja (alapegyenlet+iteráció), amíg az inga meg nem áll (az amplitúdó n-edrészére nem csökken). A fonál ideális, de a légellenállás nem elhanyagolható! A program legyen képes: