From 6e6923da3b0a0ede381417e0480b4ec46ccd7432 Mon Sep 17 00:00:00 2001 From: "lab01 (IvanovIM)" Date: Thu, 14 Mar 2024 22:21:39 +0300 Subject: [PATCH] =?UTF-8?q?code:=20=D0=A0=D0=B0=D0=B7=D0=B1=D0=B8=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=B8=D1=81=D1=85=D0=BE=D0=B4=D0=BD=D0=BE?= =?UTF-8?q?=D0=B3=D0=BE=20=D0=BA=D0=BE=D0=B4=D0=B0=20=D0=BD=D0=B0=20=D1=84?= =?UTF-8?q?=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.cpp | 102 +++++++++++++++++++++++++------------------------------ 1 file changed, 47 insertions(+), 55 deletions(-) diff --git a/main.cpp b/main.cpp index 4c93dc0..8a4ddac 100644 --- a/main.cpp +++ b/main.cpp @@ -3,42 +3,44 @@ using namespace std; -int main(){ + struct Input { + vector numbers; + size_t bin_count{}; + size_t number_count; - setlocale(LC_ALL, "RUSSIAN"); - - const size_t SCREEN_WIDTH = 80; - const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1; +}; +Input +input_data(){ - size_t number_count; //êîëè÷åñòâî ÷èñåë â ìàññèâå + setlocale(LC_ALL, "RUSSIAN"); + size_t number_count; cerr << "Ââåäèòå êîëè÷åñòâî ÷èñåë: "; cin >> number_count; + Input in; - vector numbers(number_count); //âåêòîð èç ýòèõ ÷èñåë + in.numbers.resize(number_count); cerr << "Ââåäèòå ÷åðåç ïðîáåë ýëåìåíòû ìàññèâà: "; - for (double i = 0; i < number_count; i++){ - cin >> numbers[i]; + vector numbers(number_count); + for (size_t i = 0; i < number_count; i++) { + cin >> in.numbers[i]; } - ////////////////////////////////// - - size_t bin_count; // êîëè÷åñòâî êîðçèí - - cerr << " Ââåäèòå êîëè÷åñòâî êîðçèí:"; - cin >> bin_count; - cerr << endl; - - - vector bins(bin_count); // ìàññèâ èç êîë-âà ýëåìåíòîâ â ñòîëáöàõ + size_t bin_count; + cerr << "Ââåäèòå êîëè÷åñòâî êîðçèí: "; + cin >> in.bin_count; + return in; +}; - 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 (double x : numbers) { if (x < min) { @@ -48,10 +50,18 @@ int main(){ max = x; } } +} - double bin_size = (max - min) / bin_count; // ðàçìåð êîðçèíû +auto +make_histogram(const vector numbers, size_t bin_count){ - for (size_t i = 0; i < number_count; i++) { + 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 < numbers.size(); i++) { bool found = false; for (size_t j = 0; (j < bin_count - 1) && !found; j++) { auto lo = min + j * bin_size; @@ -67,50 +77,32 @@ int main(){ } } + return bins; +} - - - size_t max_count = bins[0]; // êîëè÷åñòâî ýëåìåíòîâ â áîëüøåì ñòîëáöå - int k = 0; - for (auto i = 0; i < bin_count; i++){ - if (bins[i] >= max_count){ - max_count = bins[i]; - k=i; - } - } - - float procent; +void +show_histogram_text(const vector bins, size_t number_count, size_t bin_count){ for (size_t i = 0; i < bin_count; i++){ - int procent =((float)bins[i] / number_count)*100; - if (bins[i] < 100) cout << " "; if (bins[i] < 10) cout << " "; - cout << procent << "%|"; - - size_t height = 0; + cout << bins[i] << "|"; - - if (bins[i] < max_count){//ìàøòàáèðîâàíèå - size_t height = 76 * (static_cast(bins[i]) / max_count); - - for(size_t j=0; j < height; j++){ + for(size_t j=0; j < bins[i]; j++){ cout << "*"; - } - } - - if(i == k) - { - for(size_t j=0; j < (76*1.0); j++) - { - - cout<<"*"; - } } cout<