问题
对指定文件中的英文字符进行频率的统计,不区分大小写(都按照大写统计),忽略非字母。并使用频率直方图的形式显示出来。
来源
贴吧吧友提问
代码
#include#include #include #include using namespace std;class LetterCount { private: enum{LETTERS_SUM=26}; //常量:个英文字母有26个 string file_path; //文件路径 int total_letters; //统计到的字母的总个数 int letter_count[LETTERS_SUM]; //保存每个单词的出现次数 double letter_frequence[LETTERS_SUM]; //保存每个单词的出现频率 //不允许使用 LetterCount(const LetterCount& le); //复制函数 LetterCount& operator=(const LetterCount& le); //赋值函数 public: void setFilePath(const char *path){file_path = path;} //设置文件的路径 inline function void analyse(); //统计函数 void showGraph() const; //打印统计图 LetterCount(); LetterCount(const char *path); ~LetterCount(); }; LetterCount::LetterCount():file_path(),total_letters(0){ for(int i=0;i =r ) { printf(" *"); } else { printf(" "); } printf(" "); } printf("\n"); } printf("%-3d",0); for(char ch='A';ch<='Z';++ch) { printf("----"); } printf("\n");printf("%-3c",' '); for(char ch='A';ch<='Z';++ch) { printf(" %c",ch); } printf("\n");}int main(){ LetterCount lc("G:\\data.txt"); lc.analyse(); lc.showGraph(); return 0;}
效果