From c55781c051a7093a45eb23cfbd2fc33dfab43eef Mon Sep 17 00:00:00 2001 From: "lab-03 (olisovEA)" Date: Sat, 19 Apr 2025 22:51:58 +0300 Subject: [PATCH] =?UTF-8?q?code:=20=D0=BF=D1=80=D0=BE=D0=B3=D1=80=D0=B0?= =?UTF-8?q?=D0=BC=D0=BC=D0=B0=20=D1=83=D0=B6=D0=B5=20=D1=81=20=D1=84=D1=83?= =?UTF-8?q?=D0=BD=D0=BA=D1=86=D0=B8=D1=8F=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cbp | 40 ++++++++++++++++++++++++++ main.cpp | 86 ++++++++++++++++++++++---------------------------------- 2 files changed, 74 insertions(+), 52 deletions(-) create mode 100644 .cbp diff --git a/.cbp b/.cbp new file mode 100644 index 0000000..235a69b --- /dev/null +++ b/.cbp @@ -0,0 +1,40 @@ + + + + + + diff --git a/main.cpp b/main.cpp index fa032a1..c2f58f7 100644 --- a/main.cpp +++ b/main.cpp @@ -1,74 +1,56 @@ #include #include - - -using namespace std; - -int main() -{ +#include"histogram.h" +#include"text.h" +struct Input { + std::vector numbers; + size_t number_count; + std::vector stolb; + size_t bucket; const size_t SCREEN_WIDTH = 80; const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1; +}; +Input +input_data() { + Input in; + in.number_count; + in.bucket; - int number_count, bucket; + std::cout << "Enter number count: "; std::cin >> in.number_count; + std::cout << "Enter bucket: "; std::cin >> in.bucket; - cout << "Enter number count: "; cin >> number_count; - cout << "Enter bucket: "; cin >> bucket; + in.numbers.resize(in.number_count); - vector numbers(number_count); - for (int i = 0; i < number_count; i++) cin >> numbers[i]; - - float min = numbers[0]; - float max = numbers[0]; - - for (float x : numbers) + for (size_t i = 0;i < in.number_count;i++) { - if (x < min) min = x; - else if (x > max) max = x; + std::cin >> in.numbers[i]; } - float k = (max-min)/bucket; - vector stolb(bucket); - for (int j = 0; j < bucket; j++) stolb[j] = 0; + in.stolb.resize(in.bucket); - for (int i = 0; i < number_count; i++) + for (int j = 0; j < in.bucket; j++) { - bool flag = false; - for (int j = 0; (j < bucket && !flag); j++) - { - if (numbers[i] >= (min+k*j) && numbers[i] < (min+k*(1+j))) - { - stolb[j]++; - flag = true; - - } - } - if (!flag) stolb[bucket-1]++; + in.stolb[j] = 0; } - int maxlen = 0; + return in; +} +int +main() +{ + Input in = input_data(); - for (int j = 0; j < bucket; j++) - { - if (maxlen MAX_ASTERISK) - { - if (maxlen != stolb[j]) height = MAX_ASTERISK * (static_cast (stolb[j])/maxlen); - else if (maxlen == stolb[j]) height = MAX_ASTERISK; - } - for (int i = 0; i < height; i++) cout << "*"; - cout << "\n"; - } + find_minmax(in.numbers, min, max); + + make_histogram(in.numbers,in.stolb,in.number_count,in.bucket, max, min); + + show_histogram_text(in.stolb, in.bucket, in.MAX_ASTERISK); return 0; }