From d9c76659547a0e73650f585d2953b30870237f72 Mon Sep 17 00:00:00 2001 From: YusufovYB Date: Sun, 23 Apr 2023 15:42:10 +0300 Subject: [PATCH] =?UTF-8?q?code:=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=B8?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=B8=D1=81=D0=BA=D0=B0=20=D0=BC=D0=B8=D0=BD?= =?UTF-8?q?=D0=B8=D0=BC=D1=83=D0=BC=D0=B0=20=D0=B8=20=D0=BC=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC=D1=83=D0=BC=D0=B0=20=D1=87=D0=B8=D1=81=D0=B5?= =?UTF-8?q?=D0=BB=20=D0=B8=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=B3=D0=B8=D1=81=D1=82=D0=BE=D0=B3=D1=80=D0=B0=D0=BC?= =?UTF-8?q?=D0=BC=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.cpp | 41 ++++++++++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/main.cpp b/main.cpp index c9aff14..3e28734 100644 --- a/main.cpp +++ b/main.cpp @@ -15,31 +15,37 @@ Input input_data() Input in; in.numbers.resize(number_count); - for (int i = 0; i < number_count; i++) + for (size_t i = 0; i < number_count; i++) { cin >> in.numbers[i]; } - cerr << "Vvedite bin_count = "; + cerr << "Enter bin_count = "; cin >> in.bin_count; return in; } -int main() { - Input in = input_data(); - for (int i = 0; i < in.numbers.size(); i++) { - if (numbers[i] < minimum) - minimum = numbers[i]; - if (numbers[i] > maximum) - maximum = numbers[i]; +void find_minmax( const vector& numbers, double& minimum, double& maximum){ + minimum = numbers[0]; + maximum = numbers[1]; + for(double i: numbers){ + if (i < minimum) + minimum = i; + if (i > maximum) + maximum = i; } +} + vector make_histogram(const vector& numbers,size_t bin_count){ + double maximum, minimum; + float LL,LR; double bin_size = (maximum - minimum) / bin_count; + find_minmax(numbers,minimum,maximum); + vector bins(bin_count); LL = minimum; LR = minimum + bin_size; - for (int i = 0; i < bin_count; i++) { if (i == 0) { - for (int b = 0; b < number_count; b++) { + for (int b = 0; b < numbers.size(); b++) { if ((LL <= numbers[b]) && (numbers[b] < LR)) bins[i] += 1; @@ -49,14 +55,14 @@ int main() { } if (i == (bin_count - 1)) { LR = maximum; - for (int b = 0; b < number_count; b++) { + for (int b = 0; b < numbers.size(); b++) { if ((LL < numbers[b]) && (numbers[b] <= LR)) bins[i] += 1; } break; } if ((i != 0) && (i != (bin_count - 1))) { - for (int b = 0; b < number_count; b++) { + for (int b = 0; b < numbers.size(); b++) { if ((LL < numbers[b]) && (numbers[b] < LR)) bins[i] += 1; } @@ -64,6 +70,15 @@ int main() { LR = LL + bin_size; } } + return bins; +} + +int main() { + auto in = input_data(); + auto bins = make_histogram(in.numbers,in.bin_count); + + + const size_t SCREEN_WIDTH = 80; const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1;