Problem A
Kosningar
Languages
en
is
Athugaðu að í þessu verkefni þarf úttak að vera nákvæmlega rétt, einnig varðandi fjölda og staðsetninga bilstafa. Skrárnar verða staðsettar undir /src/ möppunni.
Skrifið forrit sem sýnir upplýsingar um kosningar á Íslandi. Inntakið í forritið eru textaskrár með upplýsingum um kjördæmi og stjórnmálaflokka, auk kosningaúrslita í hverju kjördæmi. Úttakið er fallega sniðnar töflur (prentaðar með því að nota sniðstrengi (e. format strings)) sem byggja á upplýsingum úr textaskránum.
Valmynd er sýnd notandanum endurtekið og í hverri ítrun getur hann valið eftirfarandi aðgerðir:
-
1. Show constituencies
-
2. Show parties
-
3. Show results.
-
9. Quit.
Ef einhver annar valkostur er valinn af notanda framkvæmir forritið ekki neina aðgerð og sýnir valmyndina aftur.
Show constituencies
Þegar þessi valkostur er valinn í fyrsta skipti er notandinn beðinn um skráarnafn sem inniheldur í hverri línu nafn kjördæmis og fjölda kosningabærra manna, aðskilið með semíkommu. Ef hægt er að opna skrána eru upplýsingarnar úr skránni lesnar inn í uppflettitöflu og prentaðar út í töflu. Ef þessi valkostur er síðan valinn aftur þá er taflan sýnd án þess að endurlesa gögnin.
Hér er dæmi um kjördæmisskrá, constit.txt:
Reykjavik sudur;45725 Reykjavik nordur;45638 Sudvestur;73729 Sudur;38424 Nordaustur;29887 Nordvestur;21548
Miðað við ofangreinda inntaksskrá ætti forritið að sýna eftirfarandi töflu:
Constituency Electorals ------------------------------ Reykjavik sudur 45725 Reykjavik nordur 45638 Sudvestur 73729 Sudur 38424 Nordaustur 29887 Nordvestur 21548 ------------------------------ Total: 254951
Breidd dálkanna tveggja er 20 fyrir ‘Constituency’ og 10 fyrir ‘Electorals’.
Show parties
Þegar þessi valkostur er valinn í fyrsta skipti er notandinn beðinn um skráarnafn sem inniheldur í hverri línu bókstaf og nafn stjórnmálaflokks aðskilið með semíkommu. Ef hægt er að opna skrána eru upplýsingarnar úr skránni lesnar inn í uppflettitöflu og prentaðar út í töflu. Ef þessi valkostur er síðan valinn aftur þá er taflan sýnd án þess að endurlesa gögnin.
Hér er dæmi um skrá yfir stjórnmálaflokka, parties.txt:
D;Sjalfstaedisflokkurinn B;Framsoknarflokkurinn V;Vinstri graen S;Samfylkingin F;Flokkur folksins P;Piratar C;Vidreisn M;Midflokkurinn J;Sosialistaflokkur Islands
Miðað við ofangreinda inntaksskrá ætti forritið að sýna eftirfarandi töflu:
List Party -------------------------------- D Sjalfstaedisflokkurinn B Framsoknarflokkurinn V Vinstri graen S Samfylkingin F Flokkur folksins P Piratar C Vidreisn M Midflokkurinn J Sosialistaflokkur Islands
Breidd dálkanna tveggja er 6 fyrir ‘List‘ og 26 fyrir ‘Party’.
Show results
Þegar þessi valkostur er valinn í fyrsta skipti er notandinn beðinn um skráarnafn sem inniheldur kosningaúrslitin. Þessi skrá inniheldur nafn allra kjördæmanna og fyrir hvert kjördæmi fylgja flokksstafir og atkvæðin sem samsvarandi flokkur fékk í viðkomandi kjördæmi. Gera má ráð fyrir að fjöldi kjördæma í skránni sé jöfn þeim fjölda kjördæma sem komu fram í skránni sem gefin var upp í aðgerð 1 (‘Show constituents’) og að fjöldi flokka í skránni sé jafn fjölda flokka sem kom fram í skránni í aðgerð 2 (‘Show parties’). Ef annað hvort gögnin um kjördæmin eða flokkana eru ekki þegar hlaðin inn í forritið þá mun ekki virka að hlaða gögnin um niðurstöðunnar. Ef það hefur tekist að hlaða gögnunum um niðurstöðurnar skal biðja notandann um kjördæmi til að sýna niðurstöður um.
Hér er dæmi um kosningaúrslitaskrá, results.txt:
Reykjavik sudur D;8809 V;5212 S;4720 B;4077 P;3875 F;3169 C;3067 J;1691 M;1456 Reykjavik nordur D;7353 V;5597 P;4508 S;4427 B;4329 C;2706 F;2694 J;1976 M;1234 Sudvestur D;17727 B;8520 V;7087 C;6684 P;4853 S;4748 F;4436 M;2612 J;1738 Sudur D;7296 B;7111 F;3837 S;2270 M;2207 V;2200 C;1845 P;1660 J;1094 Nordaustur B;6016 D;4346 V;3040 S;2465 M;2092 F;2026 C;1263 P;1256 J;954 Nordvestur B;4448 D;3897 V;1978 F;1510 M;1278 S;1195 P;1081 C;1063 J;728
Ef hægt er að opna kosningaúrslitaskrána ætti að lesa hana í uppflettitöflu. Lykillinn er kjördæmisnafn og gildið fyrir hvern lykil er listi af túplum. Sérhver túpla er par sem inniheldur flokksbókstaf og fjölda atkvæða.
Þegar skráin hefur verið lesin er notandi beðinn um að setja inn kjördæmisnafn sem á að sýna kosningaúrslit fyrir. Til dæmis, ef notandinn slær inn ‘Reykjavík norður’, sést eftirfarandi tafla:
Reykjavik nordur List Party Votes Ratio -------------------------------------------------------- D Sjalfstaedisflokkurinn 7353 21.1 V Vinstri graen 5597 16.1 P Piratar 4508 12.9 S Samfylkingin 4427 12.7 B Framsoknarflokkurinn 4329 12.4 C Vidreisn 2706 7.8 F Flokkur folksins 2694 7.7 J Sosialistaflokkur Islands 1976 5.7 M Midflokkurinn 1234 3.5 -------------------------------------------------------- Total: 34824 100.0 Turnout: 76.3
Breidd dálkanna fjögurra eru 10, 26, 10 og 10 fyrir ‘List‘, ‘Party‘, ‘Votes’ og ‘Ratio’, í sömu röð. Gildið fyrir dálkinn ’Ratio’ ætti að vera sniðið þannig að það hafi einn tölustaf á eftir aukastafnum. Gildi dálksins ‘Turnout’ er reiknað sem hlutfall heildaratkvæða af fjölda kosningabærra manna í viðkomandi kjördæmi.
Þegar kosningaúrslitaskráin hefur verið lesin er hún ekki endurlesin, þegar valkostur, ‘3. Sýna niðurstöður’, er valið aftur af notandanum.
Read | Sample Interaction 1 | Write |
---|
1. Show constituencies 2. Show parties 3. Show results 9. Quit Select an action:
1
File name:
constit.txt
Constituency Electorals ------------------------------ Reykjavik sudur 45725 Reykjavik nordur 45638 Sudvestur 73729 Sudur 38424 Nordaustur 29887 Nordvestur 21548 ------------------------------ Total: 254951 1. Show constituencies 2. Show parties 3. Show results 9. Quit Select an action:
1
Constituency Electorals ------------------------------ Reykjavik sudur 45725 Reykjavik nordur 45638 Sudvestur 73729 Sudur 38424 Nordaustur 29887 Nordvestur 21548 ------------------------------ Total: 254951 1. Show constituencies 2. Show parties 3. Show results 9. Quit Select an action:
2
File name:
bla.txt
1. Show constituencies 2. Show parties 3. Show results 9. Quit Select an action:
2
File name:
parties.txt
List Party -------------------------------- D Sjálfstaedisflokkurinn B Framsoknarflokkurinn V Vinstri graen S Samfylkingin F Flokkur folksins P Piratar C Vidreisn M Midflokkurinn J Sosialistaflokkur Islands 1. Show constituencies 2. Show parties 3. Show results 9. Quit Select an action:
2
List Party -------------------------------- D Sjálfstaedisflokkurinn B Framsoknarflokkurinn V Vinstri graen S Samfylkingin F Flokkur folksins P Piratar C Vidreisn M Midflokkurinn J Sosialistaflokkur Islands 1. Show constituencies 2. Show parties 3. Show results 9. Quit Select an action:
3
File name for results:
results.txt
Constituency:
Reykjavik nordur
Reykjavik nordur List Party Votes Ratio -------------------------------------------------------- D Sjálfstaedisflokkurinn 7353 21.1 V Vinstri graen 5597 16.1 P Piratar 4508 12.9 S Samfylkingin 4427 12.7 B Framsoknarflokkurinn 4329 12.4 C Vidreisn 2706 7.8 F Flokkur folksins 2694 7.7 J Sosialistaflokkur Islands 1976 5.7 M Midflokkurinn 1234 3.5 -------------------------------------------------------- Total: 34824 100.0 Turnout: 76.3 1. Show constituencies 2. Show parties 3. Show results 9. Quit Select an action:
3
Constituency:
Nordaustur
Nordaustur List Party Votes Ratio -------------------------------------------------------- B Framsoknarflokkurinn 6016 25.6 D Sjálfstaedisflokkurinn 4346 18.5 V Vinstri graen 3040 13.0 S Samfylkingin 2465 10.5 M Midflokkurinn 2092 8.9 F Flokkur folksins 2026 8.6 C Vidreisn 1263 5.4 P Piratar 1256 5.4 J Sosialistaflokkur Islands 954 4.1 -------------------------------------------------------- Total: 23458 100.0 Turnout: 78.5 1. Show constituencies 2. Show parties 3. Show results 9. Quit Select an action:
3
Constituency:
bla
1. Show constituencies 2. Show parties 3. Show results 9. Quit Select an action:
9
Read | Sample Interaction 2 | Write |
---|
1. Show constituencies 2. Show parties 3. Show results 9. Quit Select an action:
2
File name:
parties.txt
List Party -------------------------------- D Sjalfstaedisflokkurinn B Framsoknarflokkurinn V Vinstri graen S Samfylkingin F Flokkur folksins P Piratar C Vidreisn M Midflokkurinn J Sosialistaflokkur Islands 1. Show constituencies 2. Show parties 3. Show results 9. Quit Select an action:
1
File name:
blah
1. Show constituencies 2. Show parties 3. Show results 9. Quit Select an action:
3
File name for results:
results.txt
1. Show constituencies 2. Show parties 3. Show results 9. Quit Select an action:
1
File name:
constit.txt
Constituency Electorals ------------------------------ Reykjavik sudur 45725 Reykjavik nordur 45638 Sudvestur 73729 Sudur 38424 Nordaustur 29887 Nordvestur 21548 ------------------------------ Total: 254951 1. Show constituencies 2. Show parties 3. Show results 9. Quit Select an action:
3
File name for results:
results.txt
Constituency:
Sudurland
1. Show constituencies 2. Show parties 3. Show results 9. Quit Select an action:
9