Cleaned up formatting. Removed an unused comparison in the for loop responsible for printing the histogram.

This commit is contained in:
Reina Harrington-Affine 2025-08-22 18:23:16 +00:00
parent 14730549f1
commit 136abce9bf

View file

@ -1,6 +1,10 @@
#include <stdio.h> #include <stdio.h>
/*Slight modification to ex1_13.c that makes charCount an array of ints 11 entries long, in order to circumvent the need for additional mathematical operations down the line as a consequence of ocurrences of the value "1" being store at position 0. This sacrifices 4 bytes of memory in the stack by extending the array, but results a shorter binary. /*Slight modification to ex1_13.c that makes charCount an array of ints 11
* entries long, in order to circumvent the need for additional mathematical
* operations down the line as a consequence of ocurrences of the value "1"
* being store at position 0. This sacrifices 4 bytes of memory in the stack
* by extending the array, but results a shorter binary.
* *
* how much shorter, you ask? * how much shorter, you ask?
* *
@ -17,7 +21,12 @@ int main(){
int charCount[11]; /*Array for storing char lengths*/ int charCount[11]; /*Array for storing char lengths*/
int last, lCount, state, i; /*last stores last character, or 0 at init. lCount increments every time the main for loop encounters a non-newline/whitespace character and then resets when one is encountered after commiting its value to charCount.*/ int last, lCount, state, i; /*last stores last character, or 0 at init.
lCount increments every time the main for
loop encounters a non-newline/whitespace
character and then resets when one is
encountered after commiting its value
to charCount.*/
/*Begin array initialization*/ /*Begin array initialization*/
for(i = 0; i < 11; ++i){ for(i = 0; i < 11; ++i){
charCount[i] = 0; charCount[i] = 0;
@ -30,27 +39,33 @@ int main(){
/*Begin input letter count enumeration.*/ /*Begin input letter count enumeration.*/
for(int a = getchar(); a != EOF; a = getchar()){ for(int a = getchar(); a != EOF; a = getchar()){
/*Check if current char is WS. If so, set state to OUT and check if the last character was not. If it was not, then we are exiting a word, and so comitting lCount to charCount.*/ /*Check if current char is WS. If so, set state to OUT and check if the
* last character was not. If it was not, then we are exiting a word,
* and so comitting lCount to charCount.*/
if(a == '\t' || a == ' ' || a == '\n'){ if(a == '\t' || a == ' ' || a == '\n'){
state = OUT; state = OUT;
if (last != '\t' && last != ' ' && last != '\n'){ /*True on word exit only.*/ if (last != '\t' && last != ' ' && last != '\n'){ /*True on word
if(lCount > 10){ /*Array charCount only stores values up to 10, so we will add any longer words to the column for 10+*/ exit only.*/
if(lCount > 10){ /*Array charCount only stores values up to 10,
so we will add any longer words to the
column for 10+*/
++charCount[10]; ++charCount[10];
} else { } else {
++charCount[(lCount)]; } ++charCount[(lCount)]; }
lCount = 0; /*Reset lCount when a condition that dumps it to charCount is triggered*/ lCount = 0; /*Reset lCount when a condition that dumps it to
charCount is triggered*/
} }
} else { } else {
state = IN; state = IN;
++lCount; /*Increment lCount when encountering a non-WS character.*/ ++lCount; /*Increment lCount when encountering a non-WS
character.*/
} }
last = a; last = a;
} }
/*Input letter count enumeration complete*/ /*Input letter count enumeration complete*/
/*Print a table of the number of words encountered for each number of characters.*/ /*Print a table of the number of words encountered for
* each number of characters.*/
printf("Word letter count composition:\n"); printf("Word letter count composition:\n");
for (i = 1; i <= 9; ++i) for (i = 1; i <= 9; ++i)
printf("%3d", (i)); printf("%3d", (i));
@ -68,11 +83,13 @@ int main(){
printf("%3s", "10+"); printf("%3s", "10+");
} }
for (b > 0; b > 0; --b){ for (; b > 0; --b){
printf("|"); printf("|");
} }
printf("\n"); printf("\n");
b = charCount[(i + 1)]; /*Get the value of the next position in the array; since i hasn't incremented yet, it's i+1*/ b = charCount[(i + 1)]; /*Get the value of the next position in the
array; since i hasn't incremented yet,
it's i+1*/
} }
return 0; return 0;
} }