#include #define IN 1 /* inside a word*/ #define OUT 0 /* outside of a word*/ main() { int wordCount[11]; int c, state, currentCount, greatestOccurance; int i, j, k; state = OUT; currentCount = greatestOccurance = 0; for(i = 0; i < 11; i++){ wordCount[i] = 0; } while ((c = getchar()) != EOF) if (c == ' ' || c == '\t' || c == '\n' || c == EOF){ if(state == IN && currentCount > 10) wordCount[10]++; else if (state == IN) wordCount[currentCount - 1]++; state = OUT; currentCount = 0; } else if (state == OUT){ state = IN; currentCount = 1; } else currentCount++; for(i = 0; i < 11; i++){ if(wordCount[i] > greatestOccurance){ greatestOccurance = wordCount[i]; } } for (i = greatestOccurance; i >= 0; i--){ printf("\n"); if(i == 0){ for(k = 0;k < 12; k++) printf("-----"); printf("\n"); for(k = 0;k < 12; k++) if(k == 0) printf("num "); else if (k == 11) printf("<10 "); else printf("%2d ", (k)); } else { printf("%3d |", i); for(j = 0; j < 11; j++) if(wordCount[j] >= i) printf(" * "); else printf(" "); } } printf("\n"); }