Как структурировать и заполнить гистограмму?
Тривиальный случай - это всего лишь счет на бин:
/* needs error checking, badly */
int *buildHist(int bins, double min, double max, int n, double *data){
double *hist=malloc(bins*sizeof(int));
if (hist == NULL) return hist;
for (int i=0; i<n; ++i){
int bin=int( (data[i]-min)/((max-min)/(bins)) );
if ( (bin>=0) && (bin<n) ) hist[bin]++;
}
return hist;
}
Для взвешенной гистограммы массив должен иметь тип с плавающей запятой.
При наличии большего количества данных (подсчетов избыточного и недостаточного расхода, накопленной статистики ... или даже для сохранения ограничений в том же месте, что и подсчет), используйте структуру, включающую массив.
Инкрементное заполнение часто желательно, но оно должно быть очевидным.
Вывод во многом зависит от того, какая технология отображения у вас под рукой.