diff --git a/Histogram/main.cpp b/Histogram/main.cpp index 045ba3e..bfe3fd3 100644 --- a/Histogram/main.cpp +++ b/Histogram/main.cpp @@ -24,67 +24,7 @@ Input input_data() { return in; }; -size_t find_minmax(const std::vector& numbers, double& min, double& max) { - if (numbers.empty()) { - min = max = 0; - return 0; - } - min = numbers[0]; - max = numbers[0]; - for (double number : numbers) { - if (number < min) { - min = number; - } - if (number > max) { - max = number; - } - } - return 0; -} -std::vector make_histogram(const std::vector& numbers, size_t bin_count) { - std::vector bins(bin_count, 0); - if (numbers.empty() || bin_count == 0) { - return bins; - } - double min, max; - find_minmax(numbers, min, max); - if (max == min) { - return bins; // Возвращаем пустые корзины, так как гистограмма не может быть построена - } - double bin_width = (max - min) / bin_count; - for (double number : numbers) { - size_t bin_index = static_cast((number - min) / bin_width); - if (bin_index >= bin_count) { - bin_index = bin_count - 1; // Обработка крайнего случая max == number - } - bins[bin_index]++; - } - return bins; -}; -void show_histogram_text(const std::vector& bins) { - const size_t SCREEN_WIDTH = 80; - const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1; - size_t max_bin = 0; - for (size_t bin : bins) { - if (bin > max_bin) { - max_bin = bin; - } - } - for (size_t bin_value : bins) { - if (bin_value < 100) std::cout << " "; - if (bin_value < 10) std::cout << " "; - std::cout << bin_value << " |"; - size_t height = bin_value; - if (max_bin > MAX_ASTERISK) { - height = static_cast(MAX_ASTERISK * (static_cast(bin_value) / max_bin)); - } - for (size_t i = 0; i < height; ++i) { - std::cout << "*"; - } - std::cout << "\n"; - } -}; using namespace std; int main()