#include <stdio.h> #include <ctype.h> // we're going to use some type handling functions main() { char c; // store the character just read in a char, more efficient than int int charCount[26]; int x, max; // x is an array subscript, max will hold the biggest value in the // array (see later) for (x = 0; x < 26; charCount[x++] = 0); // initialise array while ((c = getchar()) != EOF) { if (isalpha(c)) { // if the input is an alphabetic character, in ctype.h c = tolower(c); // convert it to lower case, in ctype.h charCount[c-'a']++; } } // ok, all the data's been read. We can print the histogram... // need to find the biggest value in the array cell. max = 0; // initialise max for (x = 0; x < 26; x++) { if (charCount[x] > max) { max = charCount[x]; } } for (; max > 0; max--) { //printf("%d "); for (x = 0; x < 26; x++) { if (charCount[x] >= max) { putchar('x'); } else { putchar(' '); } } putchar('\n'); } // print the letters of the alphabet along the bottom for (x=0; x<26; x++){ putchar('a'+x); } putchar('\n'); }