From 665188117e5d47f9ffb3e1132613b76b1e40e3b6 Mon Sep 17 00:00:00 2001 From: Kuzin Date: Mon, 29 May 2023 14:40:45 +0300 Subject: [PATCH] =?UTF-8?q?=D1=84=D0=B0=D0=B9=D0=BB=20main?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Lab_1.cbp | 40 +++++++++++++++++++++++++ main.cpp | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 129 insertions(+) create mode 100644 Lab_1.cbp create mode 100644 main.cpp diff --git a/Lab_1.cbp b/Lab_1.cbp new file mode 100644 index 0000000..d3c8471 --- /dev/null +++ b/Lab_1.cbp @@ -0,0 +1,40 @@ + + + + + + diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..5f85b3b --- /dev/null +++ b/main.cpp @@ -0,0 +1,89 @@ +#include +#include + +using namespace std; + +int main() +{ + const size_t SCREEN_WIDTH = 80; + const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1; + + size_t number_count, bin_count, max_bin, height; + double maxx, minn; + cerr << "Enter number count: "; cin >> number_count; //Кол-во чисел + + vector numbers(number_count); + for (int i = 0; i < number_count; i++) + { + cerr << "Enter Num[" << i << "]: "; cin >> numbers[i]; //Ввод чисел + } + cerr << "Enter bin count: "; cin >> bin_count; //Кол-во корзин + + vector bins(bin_count); + maxx = numbers[0]; minn = numbers[1]; + for (size_t i = 0; i < number_count; i++) + { + if (maxx < numbers[i]) + maxx = numbers[i]; + if (minn > numbers[i]) + minn = numbers[i]; + } + + double bin_size = (maxx - minn) / bin_count; + + for (size_t i = 0; i < number_count; i++) + { + bool found = false; + for (size_t j = 0; (j < bin_count - 1) && !found; j++) + { + auto lo = minn + j * bin_size; + auto hi = minn + (j + 1) * bin_size; + if ((lo <= numbers[i]) && (numbers[i] < hi)) + { + bins[j]++; + found = true; + } + } + if (!found) + { + bins[bin_count - 1]++; + } + } + max_bin = bins[0]; + height = bins[0]; + for (size_t i = 0; i < bin_count; i++) + { + if (bins[i] > max_bin) + max_bin = bins[i]; + } + + bool flag = false; + if ( max_bin > 80) + { + flag = true; + } + for (size_t i = 0; i < bin_count; i++) + { + if (bins[i] < 100) + cout << " "; + if (bins[i] < 10) + cout << " "; + cout << bins[i] << "|"; + if( flag == true) + { + height = MAX_ASTERISK * (static_cast(bins[i]) / max_bin); + } + else + { + height = bins[i]; + } + for (size_t j = 0; j < height; j++) + { + cout << "*"; + } + cout << endl; + if ((bin_count - i) != 1) + cout << minn + bin_size * (i+1) << endl; + } + return 0; +}