(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.