<?/*
###############################################
Auteur : Joël Verheyen
Laatste wijziging : 8 November 2006 - 19:55
###############################################
Dit program telt het aantal woorden en het aantal keer dat een letter voorkomt.
*/
#include <iostream>
#include <cctype>
#include <string>
using namespace std;
void leesEnTel (int &aantalWoorden, int letterCount[]);
//leest de regel, en telt aantal letters en woorden
void Resultaat (int letterCount[]);
//print aantal woorden, en hoeveel keer de letter voorkomt
int main()
{
int aantalWoorden = 1;
int letterCount[26];
cout << endl;
cout << "Enter een lijn tekst in:" << endl << endl;
leesEnTel (aantalWoorden, letterCount);
cout << endl;
cout << aantalWoorden << " woord(en)" << endl;
Resultaat(letterCount);
return 0;
}
void leesEnTel (int &aantalWoorden, int letterCount[])
{
string lijn;
int index;
//tekst lijn intypen
getline(cin, lijn);
//beginwaarde 0 voor alle letters
for (int i = 0; i < 26; i++)
{
letterCount[i] = 0;
}
//alle karakters overlopen
for (int i=0; i<lijn.length(); i++)
{
//als het karakter een alfabetische letter is...
if (isalpha(lijn[i]))
{
//a krijgt index: 0, b krijgt index: 1, etc. int(a) is 97, dus daarom die -97.
index = int(tolower(lijn[i]))-97;
//index vermeerderen met 1
letterCount[index]++;
}
//als er een spatie voorkomt, aantalWoorden vermeerderen met 1
if (isspace(lijn[i]) && !isspace(lijn[i-1]))
{
aantalWoorden++;
}
}
}
void Resultaat(int letterCount[])
{
for (int i = 0; i < 26; i++)
{
if (letterCount[i] > 0)
{
cout << letterCount[i] << " " << char('a' + i) << endl;
}
}
}