Added an example with a struct.
[C-Programming-Examples.git] / ex_1-14.c
blob645972f65441517a5d8da276738deedf217928fd
1 #include <stdio.h>
2 #include <limits.h>
4 main ()
6 int c, i, j, nwhite, nother, maxnum;
7 int ndigit[CHAR_MAX] = { 0 };
9 maxnum = 0;
10 nwhite = nother = 0;
12 for (i = 0; i < 10; i++)
13 ndigit[i] = 0;
15 while ((c = getchar ()) != EOF)
16 if (c > CHAR_MAX)
17 { /* chars outside CHAR_MAX skipped */
19 else
21 ++ndigit[c];
24 /* print out histogram */
25 for (i = 0; i <= CHAR_MAX; ++i) // find maximim count to determine graph height
26 if (ndigit[i] > maxnum)
28 maxnum = ndigit[i];
31 for (i = 0; i < maxnum; ++i) // one row for each instance of number
33 printf ("\n");
34 printf ("%d\t|", maxnum - i); // print sidebar
35 for (j = 0; j <= CHAR_MAX; ++j) // one column for each number
37 if (ndigit[j] > 0) // skip chars not represented in file
38 if (ndigit[j] >= maxnum - i)
40 putchar ('*');
42 else
44 putchar (' ');
49 /* print vertically ascii value of char printed */
50 printf ("\n\t ");
51 for (i = 0; i <= CHAR_MAX; ++i)
53 if (ndigit[i] > 0)
55 printf ("%d", i / 100);
58 printf ("\n\t ");
59 for (i = 0; i <= CHAR_MAX; ++i)
61 if (ndigit[i] > 0)
63 printf ("%d", (i - (100 * (i / 100))) / 10);
66 printf ("\n\t ");
67 for (i = 0; i <= CHAR_MAX; ++i)
69 if (ndigit[i] > 0)
71 printf ("%d", i - (10 * (i / 10)));
74 printf ("\n");