Házi feladat

3100-L legjobbak kiválasztása

Általános leírás

Törekedj arra, hogy szép, áttekinthető kódot írj! Úgy oldd meg a feladatokat, hogy függvényeket használsz a megoldáshoz! A felhasznált függvényekben ne történjen konzolra való kiírás!

Mindegyik feladatban nagyon fontos, hogy bár egyetlen inputfájlt kapsz, úgy írd meg a programod, hogy bármilyen, a feladatkiírásnak megfelelő inputfájllal működjön!

3.100-L legjobbak kiválasztása

Olvasd be az alábbi fájl tartalmát, majd oldd meg a következő feladatokat! Minden feladat előtt a program írja ki a feladat sorszámát!

Az input.txt tanulók matematika és magyar központi írásbeli felvételi vizsgán elért eredményeit és hozott pontszámait tartalmazza. A fájl UTF-8 kódolású, nincs fejlécsora; minden sora egy tanuló adatait tartalmazza, szóközzel elválasztva, az alábbi sorrendben: vezetéknév keresztnév OM-azonosító matematikaeredmény magyareredmény hozott pontszám. A névmezők nem tartalmaznak szóközt, senkinek nincs harmadik neve. Az OM-azonosító egyedi, 11 számjegyből álló azonosító, amelyet szövegként tárolj! A két írásbeli eredmény egy-egy 0 és 50 közötti egész szám. A hozott pontszám az általános iskolai eredményekből már kiszámított, 0 és 30 közötti pontszám; a fájlban tizedesponttal szerepel, legfeljebb két tizedesjeggyel. Ezt nem kell az érdemjegyekből kiszámítanod.

Kovács Anna 71234567890 45 42 28.50
Nagy Bence 72345678901 48 39 27.75
Tóth Eszter 73456789012 40 47 30.00

A feladatban az iskola felvételi pontszámításának írásbeli eredményekre vonatkozó súlyozását és a hozott pontszámot használjuk. Egyszerűsítésként szóbeli eredményt, jogosultsági feltételeket és az iskola egyéb rangsorolási szabályait nem vesszük figyelembe. Tekintsd úgy, hogy minden tanuló mindkét tagozatra jelentkezett!

A teljes lista rendezése nem megengedett! A maximumkiválasztásos vagy a buborékos rendezést módosítsd úgy, hogy csak a legjobb N elem meghatározásához szükséges meneteket végezze el! Ezek az elemek a megadott szempont szerint rendezve kerüljenek az eredménybe; a többi elem egymáshoz viszonyított sorrendje tetszőleges maradhat. Beépített rendezést és a rendezést elrejtő könyvtári műveletet sem használhatsz.

  1. Készíts újrafelhasználható függvényt, amely paraméterként megkap egy listát, egy N egész számot és az elemek sorrendjét meghatározó összehasonlító függvényt! A függvény a fent leírt részleges rendezéssel válassza ki, és új listában adja vissza az első N elemet, a legjobbtól a legrosszabbig haladva! Feltételezheted, hogy 0 <= N <= lista.Count. N = 0 esetén üres listát adjon vissza. A következő két feladatot ennek a függvénynek a felhasználásával oldd meg, egymástól függetlenül, a teljes tanulói listából kiindulva!
  2. Válaszd ki az informatika (digitális kultúra) tagozat rangsorának első 20 tanulóját! A rangsoroláshoz használt pontszám: hozott pontszám + 0,8 · matematikaeredmény + 0,6 · magyareredmény. A magasabb pontszám jelent jobb eredményt. Pontegyenlőség esetén vezetéknév, majd keresztnév szerint, magyar ábécérendben növekvően rendezz; teljes névazonosság esetén a kisebb OM-azonosító kerüljön előre! Írd ki a kiválasztott tanulók sorszámát, teljes nevét, OM-azonosítóját és számított pontszámát! Ha 20-nál kevesebb tanuló szerepel a fájlban, mindegyiküket válaszd ki!
  3. Válaszd ki azt a 90 tanulót, akit a tömegkommunikáció (mozgóképkultúra és médiaismeret) tagozat szóbeli vizsgájára behívnánk! A rangsoroláshoz használt pontszám: hozott pontszám + 0,5 · matematikaeredmény + 0,5 · magyareredmény. A magasabb pontszám jelent jobb eredményt. Pontegyenlőség esetén vezetéknév, majd keresztnév szerint, magyar ábécérendben növekvően rendezz; teljes névazonosság esetén a kisebb OM-azonosító kerüljön előre! Írd ki a kiválasztott tanulók sorszámát, teljes nevét, OM-azonosítóját és számított pontszámát! Ha 90-nél kevesebb tanuló szerepel a fájlban, mindegyiküket válaszd ki!