From 4a1ac0d6552eaec2f357c86f24248501aee1634d Mon Sep 17 00:00:00 2001 From: "Dmitriy (BerezhkovDA)" Date: Wed, 1 May 2024 15:32:29 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BF=D1=83=D0=BD=D0=BA=D1=82=202.=20=D1=81?= =?UTF-8?q?=D1=82=D1=80=D1=83=D0=BA=D1=82=D1=83=D1=80=D0=B8=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=80=D0=BE=D0=B3=D1=80?= =?UTF-8?q?=D0=B0=D0=BC=D0=BC=D1=8B=20=D0=BF=D1=80=D0=B8=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BC=D0=BE=D1=89=D0=B8=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8?= =?UTF-8?q?=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sem2_lab1/sem2_lab1.cpp | 60 +++++++++++++++++++++-------- sem2_lab1/sem2_lab1.vcxproj | 3 ++ sem2_lab1/sem2_lab1.vcxproj.filters | 3 ++ 3 files changed, 49 insertions(+), 17 deletions(-) diff --git a/sem2_lab1/sem2_lab1.cpp b/sem2_lab1/sem2_lab1.cpp index 0425f17..00e875c 100644 --- a/sem2_lab1/sem2_lab1.cpp +++ b/sem2_lab1/sem2_lab1.cpp @@ -7,24 +7,28 @@ #define PREFIX 4 using namespace std; -int main() +struct Input { + vector numbers; + size_t bin_count{}; +}; +Input input_data() { + Input in; int number_count; - int bin_count; - //Ввод данных cerr << "Enter number count: "; cin >> number_count; cerr << "Enter bin count: "; - cin >> bin_count; - vector numbers(number_count); - vector bins(bin_count); - for (int i = 0; i < number_count; i++) - { - cin >> numbers[i]; + cin >> in.bin_count; + in.numbers.resize(number_count); + for (size_t i = 0; i < number_count; i++) { + cin >> in.numbers[i]; } - //Находим минимальное и максимальное значение - double min = numbers[0]; - double max = numbers[0]; + return in; +} + +void find_minmax(const vector& numbers, double& min, double& max) { + min = numbers[0]; + max = numbers[0]; for (double x : numbers) { if (x < min) @@ -36,7 +40,14 @@ int main() max = x; } } - //Вычисляем гистограмму +} +vector make_histogram(const vector& numbers, size_t bin_count) +{ + vector bins; + double min, max; + find_minmax(numbers, min, max); + int number_count = numbers.size(); + bins.resize(bin_count); double bin_size = (max - min) / bin_count; for (int i = 0; i < number_count; i++) { @@ -57,9 +68,14 @@ int main() bins[bin_count - 1]++; } } + return bins; +} + +void show_histogram_text(const vector& bins) +{ //Находим максимум значений корзин int max_count = bins[0]; - for (int x : bins) + for (int x : bins) { if (x > max_count) max_count = x; } @@ -73,13 +89,14 @@ int main() { K = 1; } - //K = 0; // принудительное отключение масштабирования для 1 и 2 + //Строим гистограмму int cnt; - for (int i = 0; i < bin_count; i++) + int bin_sz = bins.size(); + for (int i = 0; i < bin_sz; i++) { cout.width(3); - cout.fill(' '); + cout.fill(' '); cout << bins[i] << "|"; if (K == 0) cnt = bins[i]; @@ -94,6 +111,15 @@ int main() } +int main() +{ + auto in = input_data(); + auto bins = make_histogram(in.numbers, in.bin_count); + show_histogram_text(bins); + return 0; +} + + // Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки" // Отладка программы: F5 или меню "Отладка" > "Запустить отладку" diff --git a/sem2_lab1/sem2_lab1.vcxproj b/sem2_lab1/sem2_lab1.vcxproj index 4c7be1c..a9d3d9a 100644 --- a/sem2_lab1/sem2_lab1.vcxproj +++ b/sem2_lab1/sem2_lab1.vcxproj @@ -129,6 +129,9 @@ + + + diff --git a/sem2_lab1/sem2_lab1.vcxproj.filters b/sem2_lab1/sem2_lab1.vcxproj.filters index b1c8a99..b60e906 100644 --- a/sem2_lab1/sem2_lab1.vcxproj.filters +++ b/sem2_lab1/sem2_lab1.vcxproj.filters @@ -19,4 +19,7 @@ Исходные файлы + + + \ No newline at end of file