1. 程式人生 > >04-垂直直方圖

04-垂直直方圖

描述

 輸入4行全部由大寫字母組成的文字,輸出一個垂直直方圖,給出每個字元出現的次數。注意:只用輸出字元的出  現次數,不用輸出空白字元,數字或者標點符號的輸出次數。

輸入輸入

 包括4行由大寫字母組成的文字,每行上字元的數目不超過80個。輸出輸出包括若干行。其中最後一行給出26個  大寫英文字母,這些字母之間用一個空格隔開。前面的幾行包括空格和星號,每個字母出現幾次,就在這個字母 的上方輸出一個星號。注意:輸出的第一行不能是空行。

樣例輸入

THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG.
THIS IS AN EXAMPLE TO TEST FOR YOUR
HISTOGRAM PROGRAM.
HELLO!

樣例輸出

                            *
                            *
        *                   *
        *                   *     *   *
        *                   *     *   *
*       *     *             *     *   *
*       *     * *     * *   *     * * *
*       *   * * *     * *   * *   * * * *
*     * * * * * *     * * * * *   * * * *     * *
* * * * * * * * * * * * * * * * * * * * * * * * * *
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

來源

  翻譯自USACO 2003 February Orange的試題。

程式碼

 1 標頭檔案略
 2 using namespace std;
 3 char a[4][80];
 4 int n[26]={0}; 
 5 int main()  
 6 {
 7     int max=0;
 8     for(int i=1;i<=4;i++)
 9     {
10         gets(a[i]);
11         int A=strlen(a[i]);
12         for(int j=0;j<A;j++)
13         {
14             if
(a[i][j]==' ') continue; 15 else n[a[i][j]-63]++; 16 } 17 } 18 for(int i=2;i<=27;i++) 19 { 20 max=max>n[i]?max:n[i]; 21 } 22 for(int i=max;i>=1;i--) 23 { 24 for(int j=2;j<=27;j++) 25 { 26 if(n[j]>=max) cout<<'*'<<' '; 27 else if(max>n[j]) cout<<' '<<' '; 28 } 29 cout<<endl; 30 max--; 31 } 32 cout<<"A B C D E F G H I "; 33 cout<<"J K L M N O P Q R "; 34 cout<<"S T U V W X Y Z "<<endl; 35 return 0; 36 }