From 42d65d332eb51b191b194ff28e1a55b8dbaee8c0 Mon Sep 17 00:00:00 2001 From: ShevchukDS Date: Thu, 3 Jul 2025 01:39:22 +0300 Subject: [PATCH] inp --- main.cpp | 65 +++++++++++++------------------------------------------- 1 file changed, 15 insertions(+), 50 deletions(-) diff --git a/main.cpp b/main.cpp index 5cc7186..e904c60 100644 --- a/main.cpp +++ b/main.cpp @@ -7,64 +7,29 @@ using namespace std; struct Input { vector numbers; - size_t bin_count = 0; + size_t bin_count; }; -Input input_data() { - Input in; - int number_count; +Input input_data(istream& in) { + Input inp; + size_t number_count; + cerr << "Enter number count: "; + cin >> number_count; - do { - cerr << "Enter number count: "; - cin >> number_count; - } while (number_count < 1); - - do { - cerr << "Enter bucket: "; - cin >> in.bin_count; - } while (in.bin_count < 1); - - cerr << "\n"; - - in.numbers.resize(number_count); - for (int i = 0; i < number_count; i++) { - cin >> in.numbers[i]; - } - - return in; -} - -void show_histogram_svg(const vector& bins) { - const auto IMAGE_WIDTH = 400; - const auto IMAGE_HEIGHT = 300; - const auto TEXT_LEFT = 20; - const auto TEXT_BASELINE = 20; - const auto TEXT_WIDTH = 50; - const auto BIN_HEIGHT = 30; - const auto BLOCK_WIDTH = 10; - - svg_begin(IMAGE_WIDTH, IMAGE_HEIGHT); - - size_t max_count = 0; - for (size_t count : bins) { - if (count > max_count) max_count = count; - } - - double top = 0; - for (size_t bin : bins) { - const double bin_width = (max_count > 0) ? - (static_cast(bin) / max_count * (IMAGE_WIDTH - TEXT_WIDTH)) : 0; - svg_text(TEXT_LEFT, top + TEXT_BASELINE, to_string(bin)); - svg_rect(TEXT_WIDTH, top, bin_width, BIN_HEIGHT, "black", "#aaffaa"); - top += BIN_HEIGHT; + inp.numbers.resize(number_count); + cerr << "Enter numbers: "; + for (size_t i = 0; i < number_count; i++) { + cin >> inp.numbers[i]; } - svg_end(); + cerr << "Enter bin count: "; + cin >> inp.bin_count; + return inp; } int main() { - auto input = input_data(); - auto bins = make_histogram(input.numbers, input.bin_count); + auto in = input_data(cin); + auto bins = make_histogram(in.numbers, in.bin_count); show_histogram_svg(bins); return 0; }