Á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 két inputfájlt kapsz, úgy írd meg a programod, hogy bármilyen, a feladatkiírásnak megfelelő inputfájlpárral működjön!
3.100-SZ1 Szavazás – csak az első hely számít
Az iskola diákönkormányzati elnököt választ. A szavazók minden jelöltet sorrendbe állítanak: első helyre a leginkább támogatott, utolsó helyre a legkevésbé támogatott jelölt kerül. A választás eredményét az alábbi, a feladathoz rögzített szabályok alapján kell meghatároznod.
Bemeneti fájlok
A jeloltek.csv UTF-8 kódolású fájl első sora mezőneveket tartalmaz. Minden további sor egy jelölt egyedi pozitív egész azonosítóját és teljes nevét tartalmazza, pontosvesszővel elválasztva. Az azonosítók nem feltétlenül folytonosak, a sorok sorrendje tetszőleges. Legalább két jelölt van. A nevek nem tartalmaznak pontosvesszőt vagy sortörést; a mezők nincsenek idézőjelezve.
A szavazatok.txt UTF-8 kódolású fájl minden sora egy szavazat. A fájlnak nincs fejlécsora. Egy sorban az összes jelölt azonosítója szerepel pontosvesszővel elválasztva, a szavazó preferenciasorrendjében. Minden jelölt pontosan egyszer szerepel minden szavazaton. Feltételezheted, hogy legalább egy szavazat van, és minden szavazat érvényes. Azonos sorrendet több szavazó is megadhat.
A választás szabályai
Minden jelölt annyi szavazatot kap, ahány szavazólapon első helyen szerepel. A további helyezések ebben az eljárásban nem befolyásolják az eredményt. A legtöbb első helyezést kapó jelölt nyer; holtversenyben a kisebb azonosító dönt. A győzelemhez nem szükséges megszerezni az összes szavazat több mint felét.
Feladatok
Minden részfeladat előtt írd ki a sorszámát!
- Olvasd be a jelölteket és a szavazatokat! Írd ki a jelöltek számát és a leadott szavazatok számát!
- Készíts függvényt, amely meghatározza minden jelölt első helyezéseinek számát! A nulla szavazatot kapó jelölteket is tartsd meg!
- Rendezéssel állíts elő rangsort a szavazatszám szerint csökkenően, holtversenyben az azonosító szerint növekvően! Készíts függvényt, amely visszaadja a rendezett eredménylistát! Írd ki minden jelölt azonosítóját, teljes nevét és szavazatszámát a rangsor sorrendjében!
- Írd ki a győztes nevét! A győztes a rangsor első jelöltje.
Példa
A jeloltek.csv tartalma:
Azonosito;Nev
1;Kovács Anna
2;Nagy Bence
3;Tóth Csilla
A hozzá tartozó szavazatok.txt:
1;2;3
1;2;3
1;2;3
2;3;1
2;3;1
3;2;1
3;2;1
A rangsor és a győztes:
1;Kovács Anna;3
2;Nagy Bence;2
3;Tóth Csilla;2
A győztes: Kovács Anna
Nagy Bence és Tóth Csilla szavazatszáma azonos, ezért köztük a kisebb azonosító dönt. Kovács Anna a hét szavazatból hármat kapott, de ebben az eljárásban ez is elég a győzelemhez.