2017年11月4日 星期六

[C_AR91-易] 直方圖(C++)

**如果看不懂可以在底下留言發問**

**試著看懂別人的程式碼也是一種學習^ ^**

[C_AR91-易] 直方圖

成績: 0 / 倒扣: 0.8
題目說明: 直方圖( histogram )為統計分析研究常用的視覺化呈現的工具,例如可以將學生考試的成績依 0-9 , 10-19 , ... , 90-100 分為第 0 , 1 , … , 9 級,並將出現在各級間分數計算次數並以 x 表示,即可顯現出學生考試的成績區間分佈。
輸入說明: 輸入不定個數之整數,每個整數代表一個學生成績,其中每個整數都大於等於0且小於等於100,且各數字間以一個空白隔開。
輸出說明: 將成績經過 histogram 計算並以小寫 x 的個數分級垂直呈現,分級數字列於最後一列。並且各級之間以一個空行隔開。
範例 


Sample Input:
Sample Output:
0 71 54 41 37 54 77 47 63 54 58 58 40 45 43 56 40 35
        x x      
        x x      
        x x      
        x x      
      x x x   x  
x     x x x x x  
0 1 2 3 4 5 6 7 8 9
說明
1. 先用陣列計算每個級數的數量
2. 再來是輸出x,0和1中間有空白,1和2之間有空白,以此類推,9的右邊不用空白,而是換行。
我是一列一列輸出,如下黃色部分,0~9先不理他,只看x的部分。
首先要知道她有幾列,幾列取決於0~9中x的最大數量,最多的是4和5,有6個x。
程式碼34~62行









x

x
















x

x
















x

x
















x

x














x

x

x



x




x





x

x

x

x

x




0

1

2

3

4

5

6

7

8

9
3. x輸出完後,輸出0~9


  1. #include <iostream>  
  2. #include <cmath>  //floor()  
  3. #include<algorithm> // fill()    
  4.   
  5. using namespace std;  
  6.   
  7. int main() {  
  8.     // [C_AR91-易] 直方圖  
  9.     int count[10]; //0~9的數量  
  10.     int max = -1;  
  11.     fill(count, count+10,0);   
  12.     //int result[][];  
  13.     int num;  
  14.     while(cin >> num)  
  15.     {  
  16.         if(num >= 0 && num < 100)  
  17.         {  
  18.             count[int(floor(num/10))]++;  
  19.             if(count[int(floor(num/10))] > max)  
  20.             {  
  21.                 max = count[int(floor(num/10))];  
  22.             }  
  23.         }  
  24.         else if(num == 100)  
  25.         {  
  26.             count[9]++;  
  27.             if(count[9] > max)  
  28.             {  
  29.                 max = count[9];  
  30.             }  
  31.         }  
  32.     }  
  33.       
  34.     for(int i = max;i > 0;i--)  
  35.     {  
  36.         for(int j = 0;j < 10;j++)  
  37.         {  
  38.             if(j != 9)  
  39.             {  
  40.                 if(count[j] >= i)  
  41.                 {  
  42.                     cout << "x ";  
  43.                 }  
  44.                 else  
  45.                 {  
  46.                     cout << "  ";  
  47.                 }  
  48.             }  
  49.             else  
  50.             {  
  51.                 if(count[j] >= i)  
  52.                 {  
  53.                     cout << "x";  
  54.                 }  
  55.                 else  
  56.                 {  
  57.                     cout << " ";  
  58.                 }  
  59.             }  
  60.         }  
  61.         cout << endl;           
  62.     }  
  63.     for(int i = 0;i < 10;i++)  
  64.     {  
  65.         if(i != 9)  
  66.         {  
  67.             cout << i << " ";  
  68.         }  
  69.         else  
  70.         {  
  71.             cout << i << endl;  
  72.         }  
  73.     }  
  74.     return 0;  
  75. }  


沒有留言:

張貼留言