#include #include "histogram.h" void find_minmax(const std:: vector& numbers, double& minimum, double& maximum) { minimum = numbers[0]; maximum = numbers[1]; for (double i : numbers) { if (i < minimum) minimum = i; if (i > maximum) maximum = i; } } std::vector make_histogram(const std::vector&numbers, size_t bin_count) { double maximum, minimum; float LL, LR; find_minmax(numbers, minimum, maximum); double bin_size = (maximum - minimum) / bin_count; std::vector bins(bin_count); LL = minimum; LR = minimum + bin_size; for (int i = 0; i < bin_count; i++) { if (i == 0) { for (int b = 0; b < numbers.size(); b++) { if ((LL <= numbers[b]) && (numbers[b] < LR)) bins[i] += 1; } LL = LR; LR = LL + bin_size; } if (i == (bin_count - 1)) { LR = maximum; for (int b = 0; b < numbers.size(); b++) { if ((LL < numbers[b]) && (numbers[b] <= LR)) bins[i] += 1; } break; } if ((i != 0) && (i != (bin_count - 1))) { for (int b = 0; b < numbers.size(); b++) { if ((LL < numbers[b]) && (numbers[b] < LR)) bins[i] += 1; } LL = LR; LR = LL + bin_size; } } return bins; }