<?/*
###############################################
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;
	   }
  }
}