(H) Sanan esiintymien rivilaskuri¶
Tavoite: Kertaan vielä tiedoston lukemista. Harjoittelen STL:n säiliöiden yhdistelemistä.
Ohjeita:
Luo uusi projekti: student/05/wordcount/
.
Kirjoita ohjelma, joka laskee tiedostosta niiden rivien lukumäärän, jolla sanat esiintyvät, ja tulostaa rivinumerotiedot ja lukumäärät jokaisesta tiedostossa esiintyneestä sanasta aakkosjärjestyksessä. (Huomaa siis: vaikka sana esiintyisi yhdellä rivillä useita kertoja, se lasketaan vain kerran.)
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 tiedostossa esiintyneet sanat jokaisen omalle
rivilleen siten, että ensin tulostetaan sana, sen jälkeen
välilyönti, sanan esiintymisrivien luku määrä ja kaksoispiste ja
tämän jälkeen välilyönneillä ja pilkuilla eroteltuna ne rivinumerot,
joilla sana esiintyy.
Tämän jälkeen ohjelma lopettaa toimintansa paluuarvolla EXIT_SUCCESS
.
Esimerkkinä ohjelman toiminnasta tarkastellaan seuraavaa tilannetta.
Jos tiedoston highway.txt
sisältö on:
I'm on a high way to hell
I'm on a high way to hell
It's going really well
Well it's only hell
toimii ohjelma seuraavasti:
Input file: highway.txt
I'm 2: 1, 2
It's 1: 3
Well 1: 4
a 2: 1, 2
going 1: 3
hell 3: 1, 2, 4
high 2: 1, 2
it's 1: 4
on 2: 1, 2
only 1: 4
really 1: 3
to 2: 1, 2
way 2: 1, 2
well 1: 3
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:
- Mieti tarkasti, minkälaisen tietorakenteen valitset. Oikean tietorakenteen valitsemalla säästää paljon vaivaa.
- 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.