From 65061064fb52b140a7ecd646a8abed86335bf588 Mon Sep 17 00:00:00 2001 From: "Alexey (MinovAS)" Date: Mon, 5 Jun 2023 02:46:04 +0300 Subject: [PATCH] =?UTF-8?q?code:=D1=80=D0=B0=D0=B7=D0=B4=D0=B5=D0=BB=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BF=D1=80=D0=BE=D0=B3=D1=80=D0=B0=D0=BC=D0=BC=D1=83?= =?UTF-8?q?=20=D0=BD=D0=B0=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- histogram.cpp | 41 ++++++++++++ histogram.hpp | 3 + lab_3.xcodeproj/project.pbxproj | 12 ++++ .../UserInterfaceState.xcuserstate | Bin 15468 -> 19800 bytes main.cpp | 63 +----------------- text.cpp | 24 +++++++ text.hpp | 4 ++ 7 files changed, 86 insertions(+), 61 deletions(-) create mode 100644 histogram.cpp create mode 100644 histogram.hpp create mode 100644 text.cpp create mode 100644 text.hpp diff --git a/histogram.cpp b/histogram.cpp new file mode 100644 index 0000000..f6d543d --- /dev/null +++ b/histogram.cpp @@ -0,0 +1,41 @@ +#include "histogram.hpp" +#include + +void find_minmax(std::vector &numbers, double& min, double& max) +{ + min = numbers[0]; max = numbers[0]; + for (double x : numbers) + { + if (max < x) + max = x; + if (min > x) + min = x; + } +} + +std::vector make_histogram(std::vector numbers, size_t bin_count) +{ + double min, max; + find_minmax(numbers, min, max); + double bin_size = (max - min) / bin_count; + std::vector bins(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; + auto hi = min + (j + 1) * bin_size; + if ((lo <= numbers[i]) && (numbers[i] < hi)) + { + bins[j]++; + found = true; + } + } + if (!found) + { + bins[bin_count - 1]++; + } + } + return bins; +} diff --git a/histogram.hpp b/histogram.hpp new file mode 100644 index 0000000..6b40c1b --- /dev/null +++ b/histogram.hpp @@ -0,0 +1,3 @@ +#include + +std::vector make_histogram(std::vector numbers, size_t bin_count); diff --git a/lab_3.xcodeproj/project.pbxproj b/lab_3.xcodeproj/project.pbxproj index 2719eb8..08e91ef 100644 --- a/lab_3.xcodeproj/project.pbxproj +++ b/lab_3.xcodeproj/project.pbxproj @@ -8,6 +8,8 @@ /* Begin PBXBuildFile section */ 35EA3A982A2D54F400ED69F1 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 35EA3A972A2D54F400ED69F1 /* main.cpp */; }; + 35EA3AA02A2D58E700ED69F1 /* histogram.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 35EA3A9E2A2D58E700ED69F1 /* histogram.cpp */; }; + 35EA3AA32A2D591600ED69F1 /* text.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 35EA3AA12A2D591600ED69F1 /* text.cpp */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -25,6 +27,10 @@ /* Begin PBXFileReference section */ 35EA3A942A2D54F400ED69F1 /* lab_3 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = lab_3; sourceTree = BUILT_PRODUCTS_DIR; }; 35EA3A972A2D54F400ED69F1 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + 35EA3A9E2A2D58E700ED69F1 /* histogram.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = histogram.cpp; sourceTree = ""; }; + 35EA3A9F2A2D58E700ED69F1 /* histogram.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = histogram.hpp; sourceTree = ""; }; + 35EA3AA12A2D591600ED69F1 /* text.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = text.cpp; sourceTree = ""; }; + 35EA3AA22A2D591600ED69F1 /* text.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = text.hpp; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -42,6 +48,10 @@ isa = PBXGroup; children = ( 35EA3A972A2D54F400ED69F1 /* main.cpp */, + 35EA3AA12A2D591600ED69F1 /* text.cpp */, + 35EA3AA22A2D591600ED69F1 /* text.hpp */, + 35EA3A9E2A2D58E700ED69F1 /* histogram.cpp */, + 35EA3A9F2A2D58E700ED69F1 /* histogram.hpp */, 35EA3A952A2D54F400ED69F1 /* Products */, ); sourceTree = ""; @@ -111,7 +121,9 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 35EA3AA02A2D58E700ED69F1 /* histogram.cpp in Sources */, 35EA3A982A2D54F400ED69F1 /* main.cpp in Sources */, + 35EA3AA32A2D591600ED69F1 /* text.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/lab_3.xcodeproj/project.xcworkspace/xcuserdata/lesaminov.xcuserdatad/UserInterfaceState.xcuserstate b/lab_3.xcodeproj/project.xcworkspace/xcuserdata/lesaminov.xcuserdatad/UserInterfaceState.xcuserstate index 7d29fed0a1a4f65c608998928ecab739b698ebe4..a338503ce9e2a1e77450da922014a753aa249c18 100644 GIT binary patch delta 9426 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 aN2L?eDd|RebwMbN{wjp%@AJ3x>;C{y<-m{t diff --git a/main.cpp b/main.cpp index ecb814d..742aae6 100644 --- a/main.cpp +++ b/main.cpp @@ -1,6 +1,8 @@ #include #include #include +#include "histogram.hpp" +#include "text.hpp" using namespace std; @@ -26,67 +28,6 @@ Input input_data() return in; } -void find_minmax(vector &numbers, double& min, double& max) -{ - min = numbers[0]; max = numbers[0]; - for (double x : numbers) - { - if (max < x) - max = x; - if (min > x) - min = x; - } -} - -vector make_histogram(vector numbers, size_t bin_count) -{ - double min, max; - find_minmax(numbers, min, max); - double bin_size = (max - min) / bin_count; - vector bins(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; - auto hi = min + (j + 1) * bin_size; - if ((lo <= numbers[i]) && (numbers[i] < hi)) - { - bins[j]++; - found = true; - } - } - if (!found) - { - bins[bin_count - 1]++; - } - } - return bins; -} - -const size_t SCREEN_WIDTH = 80; -const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1; - -void show_histogram_text(std::vector bins, size_t bin_count) -{ - double max_bin = *std::max_element(bins.begin(), bins.end()); - for (size_t i = 0; i < bin_count; i++) - { - if (bins[i] < 100) - cout << " "; - if (bins[i] < 10) - cout << " "; - cout << bins[i] << "|"; - size_t height = MAX_ASTERISK * (static_cast(bins[i]) / max_bin); - for (size_t j = 0; j < height; j++) - { - cout << "*"; - } - cout << endl; - } -} - int main() { auto in = input_data(); diff --git a/text.cpp b/text.cpp new file mode 100644 index 0000000..5dc2dfc --- /dev/null +++ b/text.cpp @@ -0,0 +1,24 @@ +#include "text.hpp" +#include + +const size_t SCREEN_WIDTH = 80; +const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1; + +void show_histogram_text(std::vector bins, size_t bin_count) +{ + double max_bin = *std::max_element(bins.begin(), bins.end()); + for (size_t i = 0; i < bin_count; i++) + { + if (bins[i] < 100) + std::cout << " "; + if (bins[i] < 10) + std::cout << " "; + std::cout << bins[i] << "|"; + size_t height = MAX_ASTERISK * (static_cast(bins[i]) / max_bin); + for (size_t j = 0; j < height; j++) + { + std::cout << "*"; + } + std::cout << std::endl; + } +} diff --git a/text.hpp b/text.hpp new file mode 100644 index 0000000..b9acbfc --- /dev/null +++ b/text.hpp @@ -0,0 +1,4 @@ +#include +using namespace std; + +void show_histogram_text(vector bins, size_t bin_count);