Page 24
Write a program to print a histogram of the frequencies of different characters in its input.
#include <stdio.h>
#define MIN_CHARACTER '!'
#define MAX_CHARACTER '~'
int main()
{
int c;
int range = MAX_CHARACTER - MIN_CHARACTER;
int characters[range];
int highest_count = 0;
for (int i = 0; i < range; i++) {
characters[i] = 0;
}
while ((c = getchar()) != EOF) {
if (c >= MIN_CHARACTER && c <= MAX_CHARACTER) {
int this_count = ++characters[c - MIN_CHARACTER];
if (this_count > highest_count) {
highest_count = this_count;
}
}
}
for (int row = highest_count; row > 0; row--) {
for (int col = 0; col < range; col++) {
putchar(' ');
if (characters[col] >= row) {
putchar('#');
} else {
putchar(' ');
}
}
putchar('\n');
}
for (int i = 0; i < range; i++) {
putchar(' ');
putchar(i + MIN_CHARACTER);
}
}