diff options
| author | Sadeep Madurange <smadurange@users.noreply.github.com> | 2021-11-18 19:37:34 +0800 |
|---|---|---|
| committer | Sadeep Madurange <smadurange@users.noreply.github.com> | 2021-11-18 19:37:34 +0800 |
| commit | bfd2c1b7774a7c7fa8d07d3b8de4794c56459db6 (patch) | |
| tree | 82857590a7afffc3bbfa0d524a468add06501e6b /1 | |
| parent | 90a15aacce87b2e2f87d4629735ae4216a80764f (diff) | |
| download | k&r-exercises-bfd2c1b7774a7c7fa8d07d3b8de4794c56459db6.tar.gz | |
Improve code.
Diffstat (limited to '1')
| -rw-r--r-- | 1/13.c | 34 |
1 files changed, 15 insertions, 19 deletions
@@ -4,40 +4,36 @@ /* prints a histogram of lengths of words in the input */ int main(int argc, char *argv[]) { - int i, j, p, c, wc, cc, size; - int data[MAXWRD]; + int i, j, prev, curr, wordc, charc; + int stats[MAXWRD]; - p = '0'; - cc = wc = 0; + prev = '0'; + charc = wordc = 0; for (i = 0; i < MAXWRD; i++) - data[i] = 0; + stats[i] = 0; - while ((c = getchar()) != EOF) { - if (wc >= MAXWRD) { + while ((curr = getchar()) != EOF) { + if (wordc >= MAXWRD) { printf("Max word count %d exceeded\n", MAXWRD); return 1; } - if (c == ' ' || c == '\t' || c == '\n') { - if (p != ' ' && p != '\t' && p != '\n') { - data[wc++] = cc; - cc = 0; + if (curr == ' ' || curr == '\t' || curr == '\n') { + if (prev != ' ' && prev != '\t' && prev != '\n') { + stats[wordc++] = charc; + charc = 0; } } else { - cc++; + charc++; } - p = c; + prev = curr; } - for (i = 0; i < MAXWRD; i++) { - size = data[i]; - if (size == 0) - break; - + for (i = 0;(charc = stats[i]) > 0 && i < MAXWRD; i++) { printf("%3d: ", i + 1); - for (j = 0; j < size; j++) + for (j = 0; j < charc; j++) putchar('x'); putchar('\n'); } |
