Az alábbi feladatokat beadandóként lehet teljesíteni (beprogramozni egy tetszőleges programozási nyelven).
Minden egyes feladatra maximálisan a megadott pontszám szerezhető, ha az előírásoknak megfelel, a tárgy keretében megszerkezett ismereteket alkalmazza, hibátlanul működik, és megfelelő fejlesztői dokumentációval van ellátva (amely tartalmazza a program szerkezetét, valamint a felhasznált adatszerkezetek és algoritmusok leírását). A program nem szabályozott paraméterei tetszőlegesek lehetnek.
Egy hallgató maximum 20 pontot szerezhet a beadandókkal.
A kész programot személyesen kell bemutatni előre egyeztetett időpontban.
1) Folyamatok ütemezése (10 pont)
Folyamatok ütemezéséhez egy prioritásos sort használunk, ahol a nagyobb prioritású folyamat kerül előbb a processzorra, ha több ugyanolyan van, akkor azt, ami korábban bekerült. Egy folyamatról nyilvántartjuk a nevét és a futási idejét. Készíts programot, amely modellezi a sorra kerülő folyamatokat. Amikor egy folyamat lefut, akkor véletlenszerűen bekerülhet egy új folyamat a sorba. A program fusson addig, amíg a sor ki nem ürül, és mindig írja ki, melyik feladatot indítja és terminálja, és mennyi processzoridő telt el a program indítása óta. A programban a prioritásos sor típusát alkalmas adatszerkezet felhasználával valósítsd meg.
2) Kifejezésfa (10 pont)
Készíts programot, amely képes egy képes egy infix jelölésű inputkifejezés kifejezésfáját megadni. A kifejezésben szerepelhetnek a következő műveletek: +, -, *, /, ^ (hatványozás) a szokásos precedenciákkal, valamint az operandusok (karakterek vagy egész számok) és zárójel. A kifejezésfa egy olyan bináris fa, amelynek levelei az operandusok, belső csúcsai pedig az operátorok. Például egy a 2+2 művelet kifejezésfájában a gyökér a +, a 2-esek pedig a levelek. A kifejezésfa felépítéséhez először alakítsuk lengyelformára a kifejezést alkalmas verem adatszerkezettel.
3) Összehasonlító rendezések összehasonlítása (20 pont)
Készíts programot, amely egy tetszőleges szám inputsorozatra elvégzi a buborék-, a maximum kiválasztásos-, a verseny-, illetve a kupacrendezést, majd kiírja minden egyes algoritmusra a futási időt, az összehasonlítások számát, valamint a cserék számát. A programnak tartalmaznia kell az algoritmusok teljes körű megvalósítását. |