static void find_minmax(const std::vector& numbers, double& min, double& max) { min = numbers[0]; max = numbers[0]; for (double x : numbers) { if (x < min) min = x; else if (x > max) max = x; } } std::vector make_histogram(const std::vector& numbers, size_t bucket, size_t number_count) { std::vector stolb(bucket); double min, max; find_minmax (numbers, min, max); float k = (max-min)/bucket; for (size_t i = 0; i < bucket; i++) stolb[i] = 0; for (size_t i = 0; i < number_count; i++) { bool flag = false; for (size_t j = 0; (j < bucket && !flag); j++) { if (numbers[i] >= (min+k*j) && numbers[i] < (min+k*(1+j))) { stolb[j]++; flag = true; } } if (!flag) stolb[bucket-1]++; } return stolb; }