From 8c0597f45ff7f25aa642928373116d4bdf08278d Mon Sep 17 00:00:00 2001 From: Popko Egor Date: Thu, 25 Sep 2025 22:11:21 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BA=D0=BE=D0=B4=201=20=D0=BB=D0=B0=D0=B1?= =?UTF-8?q?=D1=8B=20+=20=D0=B2=D1=8B=D0=BD=D0=BE=D1=81=20=D1=84=D1=83?= =?UTF-8?q?=D0=BD=D0=BA=D1=86=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.cpp | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 main.cpp diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..5f90686 --- /dev/null +++ b/main.cpp @@ -0,0 +1,70 @@ +#include +#include + +using namespace std; + +struct Input +{ + vector numbers; + size_t bin_count{}; +}; + +Input input_data() +{ + size_t number_count; + cerr << "Number count: "; + cin >> number_count; + Input in; + in.numbers.resize(number_count); + + cerr << "Numbers: "; + for (size_t i = 0; i < number_count; i++) { + cin >> in.numbers[i]; + } + cerr << "Enter bin count:"; + cin >> in.bin_count; + return in; +} + +void find_minmax(const vector& numbers, double& min, double& max) { + if (numbers.empty()) { + return; + } + min = numbers[0]; + max = numbers[0]; + + for (double x : numbers) { + if (x < min) min = x; + if (x > max) max = x; + } +} + +int main() { + auto in = input_data(); + + double min, max; + find_minmax(in.numbers, min, max); + + vector bins(in.bin_count); + for (double x : in.numbers) { + size_t bin_index = (x - min) / (max - min) * in.bin_count; + if (bin_index == in.bin_count) bin_index--; + bins[bin_index]++; + } + + const size_t SCREEN_WIDTH = 80; + size_t max_count = 0; + for (size_t count : bins) { + if (count > max_count) max_count = count; + } + + for (size_t bin : bins) { + size_t height = bin * SCREEN_WIDTH / max_count; + for (size_t i = 0; i < height; i++) { + cout << '*'; + } + cout << endl; + } + + return 0; +}