Követelmények http://www.eet.bme.hu/~nagyg/chf.pdf
Lehetséges feladatok Az alábbiakhoz hasonló nehézségű, az elvárásoknak megfelelő saját problémák is megoldhatóak, ehhez azonban szükség van a laborvezető beleegyezésére. A megoldáshoz felhasználható a http://www.eet.bme.hu/~nagyg oldalról letölthető econio.c program, amely a konzol képernyő kezelését segítő függvényeket tartalmaz.
1.
Numerikus integrálás
Készíts C programot, mely a felhasználó által megadott függvényt integrálja (numerikusan). Gondosan tervezd meg az adatstruktúrát! Tervezz egy megfelelő bemeneti nyelvet. A program legyen képes: alapműveletek, polinomok, a szokásos matematikai függvények (sin, log, exp stb.) és tetszőleges kombinációjuk kezelésére. Ugyanezen feladat egy egyszerűbb verziója: Készíts C programot, amely egy, a felhasználó által megadott, tetszőleges fokszámú polinomot integrál numerikusan.
2.
Amőba
Készíts menüvezérelt C programot, mely amőbát játszik. Gondosan tervezd meg az adatstruktúrát! A program legyen képes: a játék adminisztrálására egy 13*13-as táblán, legalább 3 védekezo és legalább 2 támadó stratégiát alkalmazni, állás elmentésére ill. visszatöltésére.
3.
Ragadozó-préda probléma
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 file-ban 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: a populációk kezdőértének megadására tetszőleges időtartam megadására populáció-idő diagramm rajzolására 80X24-es karakteres képernyőn.
4.
Röppályaszámítás
Készíts menüvezérelt C programot, adott 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: mindkét kilövési szöget megtalálni, a lövedék röppályáját megjeleníteni (80X24), állandó szelet figyelembe venni, a tárolt konstansokat változtatni.
5.
Conway féle LIFE modell
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: 24*24-es élettéren, a felhasználó által, illetve file-ból beolvasott kezdeti állapotból indulni, a szimuláció folyamatos vagy lépésenkénti megjelenítésére.
6.
Szövegelemzés
Készíts menüvezérelt C programot, amely szöveget elemez: adatbázist épít a szavakból, és megszámlálja az előfordulásaikat. Csak egyszer olvasható végig a szöveg! Használj bináris fát (esetleg láncolt listát). A program legyen képes: statisztikát adni a szavakról, sorok számáról, stb., billentyűzetről és file-ból olvasni, egy elemzésben több file-t is vizsgálni, az eredményt file-ba írni.
7.
Pascal fordító
Készíts parancssorból hívható C programot, amely egyszerű standard Pascal programokat fordít C nyelvre. A program legyen képes az alábbi Pascal fordulatok kezelésére: globális / lokális változók, konstansok, értékadás, megjegyzések, beépített adattípusok, tömbök (1-tol indexelt), rekordok, függvények, eljárások, valamennyi operátor, if-then-else, for, while, read, write, writeln, (csak stdin/stdout), pred, succ, ord, chr, odd, sqr, sqrt.
8.
Huffman kódolás
Készíts parancssorból hívható C programot, amely a Huffman kódoló algoritmust felhasználva tömörít file-okat. Részleteket lásd a http://ciips.ee.uwa.edu.au/~morris/Year2/PLDS210/huffman.html címen. Tervezz megfelelő fejléc formátumot a tömörítés kódtáblázatának tárolására. A program legyen képes: file-ok tömörítése, file-ok visszaállítása, a tömörítés iránya parancssor kapcsolóval legyen megadható.
9.
Morze
Készíts parancssorból hívható C programot, amely Morze szövegeket kezel. Morze abc-t találsz pl. a http://www.soton.ac.uk/~scp93ch/morse/ címen. Az abc-t bináris fával reprezentáld! A program tudjon: szöveget Morzésítani Morze szöveget visszakódolni adjon statisztikát a karakterekrol és a Morze jelekrol (ti, tá). a konverzió iránya parancssor kapcsolóval legyen megadható.
10.
Nem korlátozott ábrázolási tartományú egész aritmetika
Készíts parancssorból hívható C programot, amely nem korlátozott ábrázolási tartományú egész aritmetikát valósít meg. A program legyen képes: bevitelkor folytatósort kezelni (sor végén "\"),
-
az öt egész alapmuvelet elvégzésére, ahogy a C-ben muködik, gyökvonásra (egész közelítő eredmény).
11.
Adatbázis 1.
Készíts menüvezérelt C programot, amely "rekordokban" tárolja bizonyos személyek nevét, foglalkozását, telefonszámát, esetleg más jellemző adatait. Valamilyen dinamikus adatszerkezetet használj! A program legyen alkalmas: - új rekordok létrehozására, - a régiek módosítására, - a régiek törlésére, - név, telefonszám, foglalkozás szerinti keresésre (részinformáció alapján is), - az adatbázis fájlba mentésére.
12.
Határidőnapló
Készíts határidő napló programot, amely "rekordokban" tárolja az események dátumát, pontos idejét, helyét, elnevezését, és egy hozzá kapcsolódó megjegyezést. Használj dinamikus adatszerkezetet. A program legyen képes: - új rekordok létrehozására, - a régiek módosítására, - a régiek törlésére, - egy adott naphoz, illetve héthez tartozó események kilistázására, - esemény név szerinti keresésére, - az adatbázis fájlba mentésére.
13.
Könyvtárprogram (Nem választható!)
Pohl László régi laborjegyzetének példája http://www.eet.bme.hu/~pohl/C_jegyzet_old.pdf (94. oldaltól) Készíts könyvtár-programot, amely képes könyvek adatait eltárolni "rekordokban". A program legyen képes: - új rekodok létrehozására, - a régiek módosítására, - a régiek törlésére, - könyvek szerző, cím, kiadási év, téma alapján való keresésére, - az adatbázis fájlba mentésére.
14.
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: - egy, illetve két játékos üzemmódra - a pontok számolására és elmentésére
15.
Akna kereső 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: - a tábla méreteinek a meghatározására - a táblán lévő aknák számának megadására - a játékidő mérésére (esetleg limitálására) - a játékos által aknának gondolt cellák megjelölésére
16.
Memóriajáték
Adott méretű táblán elem-párok vannak elrendezve a játékos számára nem látható módón. A játékos egy lépésben kiválaszthat két cellát, amelynek a tartalmát megtekintheti. Cél a párok megtalálása. Ha egy párt megtalál a játékos, azok eltűnnek a tábláról.
17.
Egyszerű HTML alapú tartalommenedzser program
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.
18.
Valósíts meg C nyelven string típust
Hozz létre egy megfelelő típust és hozzá függvényeket, amelyek segítségével egyszerűen lehet C nyelven stringeket kezelni. Legyen futtatható például az alábbi programrészlet:
string s = create_cp("Ez egy próbaszöveg"), s2 = create_c('\n'); /* a string egy mutató típus, amely egy példányát a create_xx() függvényekkel lehet létrehozni*/ add_c(s, '!'); add_s(s, s2); /* a stringhez hozzáadhatunk karaktert, c típusú stringet (char *) és másik stringet */ printf("%s", c_str(s)); /* a stringet c típusú stringgé alakíthatjuk (char *) és így átadható a hagyományos c-s stringkezelő függvényeknek*/ *char_at(s, 3) = 'x'; /* a string egyes pozícióiban lévő karakterek elérhetőek és felül is írhatóak */ /* ... -- egyéb stringkezelő függvények*/ dest(&s); /* a string törlése a memóriából*/
19.
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)! Tervezz megfelelő adatstruktúrát! Találj ki bejáró algoritmusokat és azt, hogy hogyan lehet azokat paraméterezni!
20.
SAX típusú XML elemzés
Készíts SAX típusú XML elemző (http://en.wikipedia.org/wiki/Simple_API_for_XML) programot! Lehessen megadni az XML fájl nevét és a SAX eseményeket lekezelő függvény-mutatókat!
21.
DOM típusú XML elemzés
Készíts DOM típusú XML elemző (http://en.wikipedia.org/wiki/Document_Object_Model) programot! Tervezd meg a dokumentum fa struktúrájának csomópont elemét! Ne feledkezz meg az attribútumok kezeléséről sem! Egy elemnek tetszőleges számú attribútuma és tetszőleges számú gyermek-eleme lehet!
22.
Kétnyelvű szótár program
Készítsen programot C nyelven, amely kétnyelvű elektronikus szótárat valósít meg. A szótárat szöveges fájlban tárolja! Javaslat: használja a http://www.mek.iif.hu/porta/szint/egyeb/szotar/ssa-dic/eng-hun/ honlapon található angol-magyar szótár fájlt. Funkciók: keresés mindkét nyelvben, új szó felvétele, szó jelentésének módosítása, szó törlése.
23.
Fordítóprogram
Készítsen programot C nyelven, amely a paraméterként megadott szöveges fájlban található szöveget lefordítja egy másik nyelvre. Javaslat: használja a http://www.mek.iif.hu/porta/szint/egyeb/szotar/ssa-dic/eng-hun/ honlapon található angolmagyar szótár fájlt. Funkciók: A szótárfájlt tekintse adottnak, nem szükséges, hogy a programban ez bővíthető legyen. A program először teljes mondatokat próbáljon behelyettesíteni (ha vannak a szótárban teljes mondatok), ezután a maradék szövegben a kifejezéseket helyettesítse be (csak teljes egyezés esetén kell cserélni). Ezután pedig a megmaradt szavakat fordítsa le. Azokat a szavakat, melyek nem szerepelnek a szótárban, hagyja változatlanul a szövegben, de írja ki azokat egy fájlba felsorolásszerűen (minden ilyen szó csak egyszer szerepeljen ebben a fájlban.) Ha egy szónak vagy kifejezésnek több jelentése is van, ezek közül mindig az elsőt helyettesítse be. A lefordított szöveg szintén szöveges fájlba kerüljön.
24.
Pac-man
Készítsen Pac-Man játékprogramot C nyelven. Funkciók: A játék legalább 10 pályából álljon. Legyen menthető és betölthető a játékállás. A program vezessen toplistát az elért pontszámok alapján.
25.
Amőba (Nem választható, mert megegyezik a 2. feladattal)
Készítsen amőba játékprogramot C nyelven. Funkciók: ember-ember ellen, ember-gép ellen. A rács méretét lehessen állítani legalább 2 fokozatban (pl. 12x12 és 18x18).
26.
Szöveges kalandjáték
Készítsen szöveges kalandjáték programot C nyelven. Javasolt irodalom: F. DaCosta: A kalandprogram írásának rejtelmei. A program lehet ennél egyszerűbb felépítésű is, például nem szükséges, hogy beírt szövegeket értelmezzen. Elég, ha a játékos egy listából választhatja ki, hogy mit tesz. Célszer. a játékkörnyezetet szöveges fájlban tárolni, így lehetőséget adva a játékosoknak saját „küldetések” készítésére.
Funkciók: a játékállás mentése és betöltése. Készítsen a játékhoz teljes „küldetést” is, legalább 10 helyiséggel.
27.
Grafikus kalandjáték
Készítsen szöveges kalandjáték programot C nyelven. Javasolt irodalom: F. DaCosta: A kalandprogram írásának rejtelmei. Dolgozhat grafikus üzemmódban is. Funkciók: a játékállás mentése és betöltése. Készítsen a játékhoz küldetést is, legalább 10 helyiséggel.
28.
Tetris
Készítsen tetris programot C nyelven. Funkciók: Legalább 5 sebességi fokozat. A toplistát fájlban tárolja.
29.
Órarendkészítő program
Készítsen órarendkészítő programot C nyelven. A program egyhetes és kéthetes (páros és páratlan hét) beosztást is kezeljen. • Bemenő adatok: tanárok adatai, csoportok adatai, rendelkezésre álló osztálytermek (speciális labor vagy tornaterem is lehet, ekkor bizonyos órákat kötelező itt megtartani, ill. másokat nem lehet itt tartani) valamint a köztük lévő kapcsolat (melyik csoportnál, milyen rendszerességgel (heti hány óra) kell órát tartani. Vegye figyelembe, hogy nem lehet éjjel-nappal órákat tartani, ezért a csoportok megadásakor kell azt is megadni, hogy az adott csoportok mikor érnek rá, illetve a tanároknál is megadható legyen, hogy az illető mikor nem ér rá. Figyeljen arra, hogy egy terem hány férőhelyes, ill. egy csoport hány fős létszámú. • Kimenő adatok: órarendek a tanároknak, az egyes csoportoknak, valamint a termeknek (adott teremben mikor milyen óra van). Ha valamilyen feloldhatatlan ütközés van, akkor azt a program jelzi. A keletkezett órarendeket táblázatos formában kell kiadni (text fájlba, de ha a házi feladat készítője gondolja, lehetővé teheti a képernyős megjelenítést is emellett.) A bemenő adatokat úgy kell tárolni, hogy utólag könnyű legyen módosítani, és ne kelljen mindent újból megadni egy esetleges változáskor. Ha a feladat készítője gondolja, akkor megpróbálkozhat azzal, hogy az órarendet optimalizálja úgy, hogy minél kevesebb lyukasóra legyen, elsősorban a csoportoknál, másodsorban a tanároknál.
30.
Raktári árunyilvántartó
Készítsen árunyilvántartó programot C nyelven. Az árukat vonalkód azonosítja. Az áru paraméterei közé tartoznak: beszállító, vételár, eladási ár, az áru helye a raktárban, a beszerzés és az eladás időpontja stb. Funkciók: új árucikk felvétele, árucikk törlése, adott áru paramétereinek változtatása (pl. hány darab van raktáron, hol van, mennyibe kerül stb.), keresés legalább vonalkód alapján. Az adatbázist fájlban tárolja.
31.
Média nyilvántartó.
Készítsen mp3/film/CD/DVD/stb. nyilvántartó adatbázist C nyelven. Tárolandó adatok: szerző, cím, hossz, nyelv, stb., ami az adott média jellemzője. (Csak egyféle médiát kell
kezelnie a programnak, csak lusta voltam külön mp3 nyilvántartó/film nyilvántartó/… leírást készíteni). Funkciók: új elem felvitele, elem törlése, elem módosítása, keresés legalább szerző és cím szerint.
32.
Kártyajáték
33.
Gázmodell
34.
LaTeX -> HTML
LaTeX -> HTML átkódoló program (pontosan meghatározandó az a LaTeX parancskészlet, amit ismernie kell).
35.
BibTeX formátum kezelés
Szakirodalmi adatok (publikációk) nyilvántartására való program, ami BibTeX formátumú listákat be tud olvasni, illetve saját adatait szinten BibTeX formában tarolja.
36.
Programozható zsebkalkulátort emuláló program
37.
Adatbázis 2
Akármilyen strukturált adathalmaz kezelésére szolgáló program. Tarolási forma: XML file. Műveletek: keresés, beszúrás, törlés, listázás, két file egyesítése, rész-listák leválogatása és mentése.
38.
Képletszerkesztő
39.
WYSIWIG editor (pl. LaTeX-hez)
40.
Kapcsolási rajz szerkesztő program
41.
Folyamatábra szerkesztő program