2017-10-28 5 views
-4

int配列を引数とする関数を記述しようとしていて、配列にデータのヒストグラムに '*'を書きます。例えば配列内のデータからヒストグラムを描画する

、int型ARR [] {2,1,0,7,1,9}、我々が得るべきである:

histogram

がどのように私はこのコードを書く必要がありますか?

私のコードは:すべてが同時に印刷する必要があるため

ここ
using namespace std; 

    int max = 0; 
    char znak = '*'; 

    void histo(int arr[], size_t size) { 
     for (int i = 0; i < size; i++) { 
      if (arr[i] > max) 
       max = arr[i]; 
     } 

//drawing histogram 

while (max > 0) { 
      for (int i = 0; i < size; i++) { 
       if (arr[i] >= max) { 
        cout << znak << " "; 
       } 
       else { 
        cout << " "; 
       } 
      } 
      max--; 
     } 

    } 


    int main() 
    { 
     int arr[]{2,1,0,7,1,9}; 
     size_t size = sizeof(arr)/sizeof(*arr); 
     histo(arr, size); 

    } 
+0

質問がありません。 – DimChtz

+0

_「描画ヒストグラムに問題があります」_は有効な問題文ではありません。何をしようとしているのか、何を問題にしているのか、何を期待しているのか、どのような行動をしているのかなどを教えてください。[ヘルプセンター](http://stackoverflow.com)/help)、[どのように良い質問をするのですか?](http://stackoverflow.com/help/how-to-ask)セクションを読んでください。 –

+0

申し訳ありません。私の悪い。私はそれを編集した。 – gallrdm

答えて

0

コードが

char znak = '*'; 

void histo(int arr[], size_t size) { 

    //finding the top point of this hystogram 
    int max = arr[0]; 
    for (int i = 0; i < size; i++) { 
     if (arr[i] > max) { 
      max = arr[i]; 
     } 
    } 
    int level = max; 
    int currSize =0; 
    while (level != 0) { 
     for (int i = 0; i < size; i++) { 
      currSize = arr[i]; 
      if (currSize >= level) { 
       cout << znak; 
      } 
      else 
      { 
       cout << " "; 
      } 
     } 
     level--; 

     cout << "\n"; 
    } 
} 
int main() 
{ 
    int arr[]{2,1,0,7,1,9}; 
    size_t size = sizeof(arr)/sizeof(*arr); 
    histo(arr, size); 

} 

に動作するはずされる方法を、あなたは*場合にのみ印刷されますを確認しますアレイは、その高さで印刷するはずです。

関連する問題