// word_len_histo.cpp : reads words and lists distribution
// of word lengths.
// Fred Swartz, 2002-09-01
// This would be nice to turn into an OO program, where
// a class represented a distribution of values.
// Some elements which are globals here would turn into
// private member elements in the class (eg, valueCount).
//--- includes
#include
#include
#include
using namespace std;
//--- prototypes
void countValue(int cnt);
float getAverage();
//--- constants
const int BINS = 21; // how many numbers can be counted
//--- globals
int valueCount[BINS]; // bins used for counting each number
int totalChars = 0; // total number of characters
//=========================================================== main
int main() {
char c; // input character
int wordLen = 0; // 0 if not in word, else word length
//--- Initialize counts to zero
for (int i=0; i
valueCount[i] = 0;
}
//--- Read chars in loop and decide if in a word or not.
while (cin.get(c)) {
if (isalpha(c)) { // letters are in words, so
wordLen++; // add one to the word length
} else {
countValue(wordLen); // end of word
wordLen = 0; // not in a word, set to zero
}
}
countValue(wordLen); // necessary if word ended in EOF
//--- print the number of words of each length
cout << "Why does this line disappear?" << endl;
cout << "Word length Frequency" << endl;
for (int j=1; j
cout << setw(6) << right << j << " "
<< setw(8) << right << valueCount[j] << endl;
}
//--- print average length
cout << "\nAverage word length: " << getAverage() << endl;
return 0;
}//end main
//==================================================== countValue
void countValue(int cnt) {
if (cnt > 0) {
// this must be the end of a word
if (cnt > 20) {
cnt = 20; // longer than 20 counts as 20
}
valueCount[cnt]++; // count in correct bin
}
totalChars += cnt;
}//end countWord
//==================================================== getAverage
float getAverage() {
int totalCount = 0;
for (int i=0; i
totalCount += valueCount[i];
}
if (totalCount > 0) {
return (float)totalChars/totalCount;
} else {
return 0.0;
}
}//end getAverage
Wednesday, September 1, 2010
Word Length Frequency
Labels:
programCPP,
udf
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment