Home » Ask & Discuss » Board Exams - CBSE, ICSE, State Boards » Computer Science « Back to Discussion
Computer Science
Comments (3)
®ÛÐÿ 01 offline forever
Scorching goIITian

Joined: 14 Oct 2007
Posts: 248
15 May 2009 07:35:15 IST
Like
0 people liked this
Reply
15 May 2009 07:38:49 IST
Like
0 people liked this
this is the program for finding the frequency of a word try it comment on it and don't forget to rate me cheers
//--- includes
#include <iostream>
#include <iomanip>
#include <cctype>
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<BINS; 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<BINS; 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<BINS; i++) {
totalCount += valueCount[i];
}
if (totalCount > 0) {
return (float)totalChars/totalCount;
} else {
return 0.0;
}
}//end getAverage











