1 5dc21454 2023-07-14 jrmu /* Write a program to print a histogram of the frequencies of
2 5dc21454 2023-07-14 jrmu * different characters in its input. */
4 5dc21454 2023-07-14 jrmu #include <stdio.h>
5 5dc21454 2023-07-14 jrmu #define CHARSIZE 256
9 5dc21454 2023-07-14 jrmu int histogram[CHARSIZE], c, maxfreq;
11 5dc21454 2023-07-14 jrmu for (int i = 0; i < CHARSIZE; ++i)
12 5dc21454 2023-07-14 jrmu histogram[i] = 0;
14 5dc21454 2023-07-14 jrmu maxfreq = 0;
16 5dc21454 2023-07-14 jrmu while ((c = getchar()) != EOF) {
17 5dc21454 2023-07-14 jrmu ++histogram[c];
19 5dc21454 2023-07-14 jrmu for (int i = '0'; i <= '9'; ++i) {
20 5dc21454 2023-07-14 jrmu printf("%c: %6d\n", i, histogram[i]);
22 5dc21454 2023-07-14 jrmu for (int i = 'A'; i <= 'Z'; ++i) {
23 5dc21454 2023-07-14 jrmu printf("%c: %6d\n", i, histogram[i]);
25 5dc21454 2023-07-14 jrmu for (int i = 'a'; i <= 'z'; ++i) {
26 5dc21454 2023-07-14 jrmu printf("%c: %6d\n", i, histogram[i]);
29 5dc21454 2023-07-14 jrmu ++histogram[letters];
31 5dc21454 2023-07-14 jrmu for (int i = 1; i <= MAXLENGTH; ++i) {
32 5dc21454 2023-07-14 jrmu printf("%2d: %5d", i, histogram[i]);
33 5dc21454 2023-07-14 jrmu for (int j = 0; j < histogram[i]; ++j) {
34 5dc21454 2023-07-14 jrmu printf("=");
36 5dc21454 2023-07-14 jrmu printf("\n");
38 5dc21454 2023-07-14 jrmu maxfreq = (histogram[i] > maxfreq ? histogram[i] : maxfreq);
40 5dc21454 2023-07-14 jrmu printf("\n\n");
41 5dc21454 2023-07-14 jrmu for (int h = maxfreq; h > 0; --h) {
42 5dc21454 2023-07-14 jrmu for (int i = 1; i <= MAXLENGTH; ++i) {
43 5dc21454 2023-07-14 jrmu if (histogram[i] >= h) {
44 5dc21454 2023-07-14 jrmu printf(" | ");
46 5dc21454 2023-07-14 jrmu printf(" ");
49 5dc21454 2023-07-14 jrmu printf("\n");
51 5dc21454 2023-07-14 jrmu for (int i = 1; i <= MAXLENGTH; ++i) {
52 5dc21454 2023-07-14 jrmu printf("===");
54 5dc21454 2023-07-14 jrmu printf("\n");
55 5dc21454 2023-07-14 jrmu for (int i = 1; i <= MAXLENGTH; ++i) {
56 5dc21454 2023-07-14 jrmu printf("%2d ",i);
58 5dc21454 2023-07-14 jrmu printf("\n");