プログラミング初心者、学生
「ヒストグラムって何?なんかC言語でヒストグラム書けって言われたんだけど・・・」
そんな方の疑問に答えます。
コードが知りたい方は目次のソースコードへ飛んでください!
本記事のテーマ
ヒストグラムとは
ヒストグラム(英語: histogram[1])とは、縦軸に度数、横軸に階級をとった統計グラフの一種で、データの分布状況を視覚的に認識するために主に統計学や数学、画像処理等で用いられる。柱図表[1]、度数分布図、柱状グラフともいう。(Wikipedia引用)
実装
今回は
int array[15] = {1, 4, 2, 2, 1, 5, 4, 1, 2, 7, 6, 6, 1, 2, 2};
この配列をヒストグラムに変換します。
ヒストグラム(histogram)変換!
変換方法は、
1. 配列histogramを宣言する
2. histogramの要素を階級とし、同じ階級の数字を数える
histogram変換コード
array_size = sizeof(array) / sizeof(int);
int histogram[100] = {0}; //適当に大きめに配列を宣言
for(int i =0; i<array_size; i++){
histogram[array[i]]++;
}
histogram表示コード
max_index = max_array(array, array_size); //階級の最大値を計算
for(int i=0; i<max_index; i++){
printf("%d: ", i);
for(int j=0;j<histogram[i]; j++){
printf("*");
}
printf("\n");
出力
0:
1: ****
2: *****
3:
4: **
5: *
6: **
完成です!
統計処理などでも使うので、便利にご活用ください!
ソースコード
#include <stdio.h>
void enshu0603(void);
int max_array(int array[], int array_size);
int main() {
enshu0603();
return 0;
}
void enshu0603(){
int array[15] = {1, 4, 2, 2, 1, 5, 4, 1, 2, 7, 6, 6, 1, 2, 2};
int max_index, array_size;
array_size = sizeof(array) / sizeof(int);
max_index = max_array(array, array_size);
int histogram[100] = {0};
for(int i =0; i<array_size; i++){
histogram[array[i]]++;
}
for(int i=0; i<max_index; i++){
printf("%d: ", i);
for(int j=0;j<histogram[i]; j++){
printf("*");
}
printf("\n");
}
}
int max_array(int array[], int array_size){
int tmp = array[0];
for (int i=0; i<array_size; i++) {
if(array[i] > tmp){
tmp = array[i];
}
}
return tmp;
}