Házi feladat

3100 Szavazás – csak az első hely számít

Á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!

  1. Olvasd be a jelölteket és a szavazatokat! Írd ki a jelöltek számát és a leadott szavazatok számát!
  2. 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!
  3. 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!
  4. Í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.