diff --git a/lab1.cpp b/lab1.cpp index 30c7603..cca342b 100644 --- a/lab1.cpp +++ b/lab1.cpp @@ -4,7 +4,7 @@ #include #include #include - +#include "histogram.h" using namespace std; @@ -30,64 +30,6 @@ input_data() { return in; } -void find_minmax(const vector& numbers, double& min, double& max) { - min = numbers[0]; - for (auto i = 0; i < numbers.size(); i++) { - if (numbers[i] < min) { - min = numbers[i]; - } - } - - max = numbers[0]; - for (auto i = 0; i < numbers.size(); i++) { - if (numbers[i] > max) { - max = numbers[i]; - } - } - -} - -vector make_histogram(const vector& numbers, size_t bin_count) { - - vector bins(bin_count); - vector binss(bin_count); - - double max, min; - find_minmax(numbers, min, max); - double bin_size = (max / min) / bin_count; - - for (size_t i = 0; i < numbers.size(); i++) { - bool found = false; - for (size_t j = 0; (j < bin_count - 1) && !found; j++) { - auto lo = min + j * bin_size; - auto hi = min + (j + 1) * bin_size; - if ((lo <= numbers[i]) && (numbers[i] < hi)) { - bins[j]++; - found = true; - } - } - if (!found) { - bins[bin_count - 1]++; - } - } - - int max_count = bins[0]; - for (size_t i = 0; i < bin_count; i++) { - if (bins[i] > max_count) { - max_count = bins[i]; - } - } - - if (max_count > 76) { - - for (size_t i = 0; i < bin_count; i++) { - int count = bins[i]; - size_t height = 76 * (static_cast(count) / max_count); - bins[i] = height; - } - } - return bins; -} void show_histogram_text(vector bins, size_t bin_count) {