打印柱状图

样例输入输出


#include 
#include 
#include 

using namespace std;

char str[80];
//num存放每个字母出现次数
int num[26] = {0};

int main()
{
    int n = 4, max = 0;
    while(n--) {
        gets(str);
        for(int i = 0; i < strlen(str); ++i) {
            switch(str[i]) {
                case 'A': num[0]++;break;
                case 'B': num[1]++;break;
                case 'C': num[2]++;break;
                case 'D': num[3]++;break;
                case 'E': num[4]++;break;
                case 'F': num[5]++;break;
                case 'G': num[6]++;break;
                case 'H': num[7]++;break;
                case 'I': num[8]++;break;
                case 'J': num[9]++;break;
                case 'K': num[10]++;break;
                case 'L': num[11]++;break;
                case 'M': num[12]++;break;
                case 'N': num[13]++;break;
                case 'O': num[14]++;break;
                case 'P': num[15]++;break;
                case 'Q': num[16]++;break;
                case 'R': num[17]++;break;
                case 'S': num[18]++;break;
                case 'T': num[19]++;break;
                case 'U': num[20]++;break;
                case 'V': num[21]++;break;
                case 'W': num[22]++;break;
                case 'X': num[23]++;break;
                case 'Y': num[24]++;break;
                case 'Z': num[25]++;break;
            }
        }
    }
    for(int i = 0; i < 26; ++i) {
        if(num[i] >= max)
            max = num[i];
    }
    int matrix[max][26] = {0};
    for(int j = 0; j < 26; ++j) {
        for(int i = 0; i < num[j]; ++i) {
            matrix[max - i - 1][j] = 1;
        }
    }
    for(int i = 0; i < max; i++) {
        for(int j = 0; j < 26; j++) {
            if(matrix[i][j] == 1)
                printf("*");
            else
                printf(" ");
        }
        printf("\n");
    }
    cout << "ABCDEFGHIJKLMNOPQRSTUVWXYZ\n" << endl;
    return 0;
}

你可能感兴趣的:(打印柱状图)