From 9ec235110ac14727cd747ebbaaa1888515a941ab Mon Sep 17 00:00:00 2001 From: FilippovaYI Date: Mon, 6 May 2024 03:01:55 +0300 Subject: [PATCH] =?UTF-8?q?code:=20=D1=81=D1=82=D1=80=D1=83=D0=BA=D1=82?= =?UTF-8?q?=D1=83=D1=80=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B3=D1=80=D0=B0=D0=BC=D0=BC=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.cpp | 72 +++++++++++++++++++++++++++++++++----------------------- 1 file changed, 42 insertions(+), 30 deletions(-) diff --git a/main.cpp b/main.cpp index 5ce2862..3d22425 100644 --- a/main.cpp +++ b/main.cpp @@ -3,25 +3,29 @@ using namespace std; const size_t SCREEN_WIDTH = 80; const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1; -int main() -{ + +struct Input { + vector numbers; + size_t bin_count{}; +}; + +Input +input_data() { size_t number_count; - cerr << "Enter number count: "; cin >> number_count; - - vector numbers(number_count); - cerr << "Enter numbers: "; - for(size_t i = 0; i < number_count; i++){ - cin >> numbers[i]; + Input in; + in.numbers.resize(number_count); + for (size_t i = 0; i < number_count; i++) { + cin >> in.numbers[i]; } + cin >> in.bin_count; + return in; +} - size_t bin_count; - cerr << "Enter bin count: "; - cin >> bin_count; - - double min = numbers[0]; - double max = numbers[0]; - /* +void +find_minmax(const vector& numbers, double& min, double& max) { + min = numbers[0]; + max = numbers[0]; for (size_t x : numbers) { if (x < min) { min = x; @@ -30,18 +34,15 @@ int main() max = x; } } - */ - for (size_t i=1; imax){ - max=numbers[i]; - } - } + // (здесь код поиска минимума и максимума) +} + +vector make_histogram(const vector& numbers, size_t bin_count){ vector bins(bin_count); + double min, max; + find_minmax(numbers, min, max); double bin_size = (max-min)/bin_count; - for (size_t i = 0; i < number_count; i++) { + 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; @@ -54,26 +55,30 @@ int main() if (!found) { bins[bin_count-1]++; } - } + return bins; +} + +void +show_histogram_text(vector bins){ size_t max_count = bins[0]; for(size_t x: bins){ if(x > max_count){ max_count = x; } } - vector heights(bin_count); + vector heights(bins.size()); if (max_count>MAX_ASTERISK){ - for (size_t i = 0; i < bin_count; i++){ + for (size_t i = 0; i < bins.size(); i++){ heights[i] = MAX_ASTERISK * (static_cast(bins[i]) /max_count); } } else{ - for (size_t i=0; i