#include "histogram.h" #include using namespace std; void FindMinMax(const vector& Numbers, double& minn, double& maxx) { maxx = Numbers[0]; minn = Numbers[0]; for (auto x : Numbers) { if (x > maxx) { maxx = x; } if (x < minn) { minn = x; } } } vector MakeHistogram(vector Numbers, size_t BinCount, double& MaxCount) { double maxx, minn; FindMinMax(Numbers, minn, maxx); double BinSize = (maxx - minn) / BinCount; vector Bins(BinCount); for (size_t i = 0; i < Numbers.size(); i++) { bool found = false; for (size_t j = 0; (j < BinCount - 1) && !found; j++) { auto lo = minn + j * BinSize; auto hi = minn + (j + 1) * BinSize; if ((lo <= Numbers[i]) && (Numbers[i] < hi)) { Bins[j]++; found = true; if (Bins[j] > MaxCount) { MaxCount = Bins[j]; } } } if (!found) { Bins[BinCount - 1]++; if (Bins[BinCount - 1] > MaxCount) { MaxCount = Bins[BinCount - 1]; } } } return Bins; }