Added cbd_rand. Generates x random numbers in y columns. Interactive program.
[C-Programming-Examples.git] / ex_1-14a.c
blob26ff29ed4d8c9a6b4208464c1ba1bd33da1e2c12
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) { /* chars outside CHAR_MAX skipped */ } else { ++ndigit[c]; }
18 /* print out histogram */
19 for(i = 0; i <= CHAR_MAX; ++i) // find maximim count to determine graph height
20 if(ndigit[i] > maxnum) { maxnum = ndigit[i]; }
22 for(i = 0; i < maxnum; ++i) // one row for each instance of number
24 printf("\n");
25 printf("%d\t|", maxnum-i); // print sidebar
26 for(j = 0; j <= CHAR_MAX; ++j) // one column for each number
28 if(ndigit[j] > 0) // skip chars not represented in file
29 if(ndigit[j] >= maxnum-i) { putchar('*'); } else { putchar(' '); }
33 /* print vertically ascii value of char printed */
34 printf("\n\t ");
35 for (i = 0; i <= CHAR_MAX; ++i) { if(ndigit[i] > 0) { printf("%d", i/100); } }
36 printf("\n\t ");
37 for (i = 0; i <= CHAR_MAX; ++i) { if(ndigit[i] > 0) { printf("%d", (i-(100*(i/100)))/10); } }
38 printf("\n\t ");
39 for (i = 0; i <= CHAR_MAX; ++i) { if(ndigit[i] > 0) { printf("%d", i-(10*(i/10))); } }
40 printf("\n");