#include "histogram.h" #include #include #include void find_minmax(const std::vector& numbers, double& min, double& max, bool& res){ if (numbers.size() == 0){ res = false; return; } min = numbers[0]; max = numbers[0]; for (auto x : numbers) { if (x < min) { min = x; } else if (x > max) { max = x; } } } std::vector make_histogram(const std::vector& numbers, size_t bin_count){ double min, max; bool res = true; find_minmax (numbers, min, max, res); if (res == false){ std::cerr << "Number of elements cannot be equal to zero"; exit(1); } double bin_size = (max - min) / bin_count; std::vector bins(bin_count); for (auto x : numbers) { bool found = false; for (size_t j = 0; (j < bin_count - 1) && !found ; j++) { if ((min + j * bin_size <= x) && (x < min + (j + 1) * bin_size)) { bins[j] += 1; found = true; } } if (!found) bins[bin_count - 1]++; } return bins; }