垂直直方图

来源:互联网 发布:windows pdf阅读器下载 编辑:程序博客网 时间:2024/05/01 00:44
#include <iostream>#include <cstring>#include <ctype.h>using namespace std;int main(){int alpha[26] = {0};char buf[80 + 10] = {};for(int i = 0; i < 4; i++){cin.getline(buf, 81);for(int j = 0; j < strlen(buf); j++){if(isalpha(buf[j]))alpha[buf[j] - 'A'] += 1;}}int max = 0;int i, j;for(i = 0; i < 26; i++){max = max > alpha[i] ? max : alpha[i];    // max记录柱形图最高层数}for(i = 0; i < max; i++){for(j = 0; j < 26; j++){int last = 1;    // last标记的是当前字母是不是最后一个出现在水平线上的'*',为的是避免在每行生成多余的空格for(int k = j; k < 26; k++){if(max - i <= alpha[k])last = 0;}if(last){cout << endl;break;}if(max - i > alpha[j])    cout << " ";else{cout << "*";}last = 1;for(int k = j + 1; k < 26; k++){if(max - i <= alpha[k])last = 0;}if(!last && j != 25)cout << " ";if(j == 25)cout << endl;}}cout << "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z" << endl;return 0;}

原创粉丝点击