From 817c42323e7b8ff7d7fd2e4daaa496f64d0ac1a8 Mon Sep 17 00:00:00 2001 From: Stathis Kamperis Date: Sun, 20 Jan 2008 18:34:49 +0100 Subject: [PATCH] Calculate array len once, use many --- homework/charfreq.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/homework/charfreq.c b/homework/charfreq.c index 0d659ce..fbf7cac 100644 --- a/homework/charfreq.c +++ b/homework/charfreq.c @@ -17,7 +17,7 @@ int main(int argc, char *argv[]) * That said, the following is adequate: */ unsigned int freq[26] = { 0 }; /* Frequencies for 'A' to 'Z' */ - unsigned int i, j, maxf; + unsigned int i, j, len, maxf; int c; FILE *fp; @@ -40,9 +40,12 @@ int main(int argc, char *argv[]) freq[c - 'A']++; } + /* Calculate size of array */ + len = sizeof freq / sizeof *freq; + /* Get max frequency */ maxf = freq[0]; - for (i = 1; i < sizeof freq / sizeof *freq; i++) + for (i = 1; i < len; i++) if (freq[i] > maxf) maxf = i; @@ -50,7 +53,7 @@ int main(int argc, char *argv[]) i = maxf; for (i = freq[maxf]; i > 0; i--) { printf("%3u| ", i); - for (j = 0; j < sizeof freq / sizeof *freq; j++) + for (j = 0; j < len; j++) if (freq[j] >= i) printf("*"); else @@ -60,7 +63,7 @@ int main(int argc, char *argv[]) /* Print letters */ printf(" "); - for (i = 0; i < sizeof freq / sizeof *freq; i++) + for (i = 0; i < len; i++) printf("%c", (char)('A' + i)); printf("\n"); -- 2.11.4.GIT