Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define IN 1 /* inside a word */
- #define OUT 0 /* inside a word */
- #define MAXWORDLEN 15
- int main(void)
- {
- int i, j;
- int c, wl, state, maxval;
- int length[MAXWORDLEN+1];
- for (i = 0; i <= MAXWORDLEN; ++i)
- length[i] = 0;
- state = OUT;
- while ((c = getchar()) != EOF) {
- if (c == ' ' || c == '\t' || c == '\n') {
- if (state == IN) {
- if (wl <= MAXWORDLEN)
- length[wl-1] += 1;
- else
- length[MAXWORDLEN] += 1;
- state = OUT;
- }
- } else {
- if (state == OUT) {
- wl = 0;
- state = IN;
- }
- wl +=1;
- }
- }
- /* Vertical histogram */
- printf("\nVertical histogram\n\n");
- /* get maximum wordlength count */
- maxval = 0;
- for (i = 0; i <= MAXWORDLEN; ++i)
- if (length[i] > maxval)
- maxval = length[i];
- /* print a line per count result */
- for (i = 0; i < maxval; ++i) {
- printf(" %2d |", maxval - i);
- for (j = 0; j <= MAXWORDLEN; ++j) {
- if (length[j] >= maxval - i)
- printf(" #");
- else
- printf(" ");
- }
- printf("\n");
- }
- /* print bottom line */
- printf(" ");
- for (i = 0; i <= MAXWORDLEN; ++i)
- printf("---");
- printf("-\n");
- /* print the word lengths */
- printf(" ");
- for (i = 0; i <= MAXWORDLEN; ++i)
- if (i != MAXWORDLEN)
- printf(" %2d", i+1);
- else
- printf(" %2d>", i);
- printf("\n");
- return(0);
- }
Advertisement
Add Comment
Please, Sign In to add comment