(H) Pisteiden laskentaa

Tavoite: Kertaan vielä tiedoston lukemista. Opin käyttämään map-tietorakennetta.

Ohjeita: Luo uusi projekti: student/05/points/.

Tee ohjelma, joka auttaa laskemaan yhteen kilpailijoiden jossain pelissä saamia pistemääriä. Pistemäärät voidaan syöttää ohjelmalle oikeastaan missä tahansa järjestyksessä, eikä ohjelma ota kantaa edes siihen, kuinka monta pistemäärää kukakin kilpailija saa. Ainoat toimenpiteet, jotka ohjelma suorittaa, ovat saman nimisen kilpailijan pisteiden yhteenlaskeminen ja kaikkien kilpailijoiden pistemäärien tulostaminen aakkostettuna pelaajan nimen mukaan.

Käynnistyttyään ohjelma kysyy tiedoston nimen. Mikäli tiedostoa ei saada avattua, tulostetaan virheilmoitus “Error! The file <filename> cannot be opened.”, jossa <filename> on korvattu tiedoston nimellä, ja lopetetaan ohjelman toiminta paluuarvolla EXIT_FAILURE.

Ohjelma tulostaa ensin otsikon “Final scores:” ja sen jälkeen tiedostossa esiintyneet kilpailijat jokaisen omalle rivilleen siten, että ensin tulostetaan kilpailijan nimi, sen jälkeen kaksoispiste ja välilyönti ja pelaajan kokonaispistemäärä. Tämän jälkeen ohjelma lopettaa toimintansa paluuarvolla EXIT_SUCCESS.

Esimerkkinä ohjelman toiminnasta tarkastellaan seuraavaa tilannetta. Jos tiedoston example1.input sisältönä on:

essi:5
pietari:9
essi:2
pietari:10
pietari:7
aps:25
essi:1

toimii ohjelma seuraavasti:

Input file: example1.input
Final scores:
aps: 25
essi: 8
pietari: 26

Jos tiedostoa not_a_file.txt ei ole olemassa, toimii ohjelma seuraavasti:

Input file: not_a_file.txt
Error! The file not_a_file.txt cannot be opened.

Vinkkejä tehtävän tekemiseen:

  • Muista vaihtaa ohjelman suorituskansio, jotta ohjelma löytää käyttämäsi tekstitiedostot. Tämän tekeminen on neuvottu tehtävässä Tiedoston rivien numerointi.

A+ esittää tässä kohdassa tehtävän palautuslomakkeen.