From 7d84adb043fcb1ea00cf2f8c1d7cb5c1883306ed Mon Sep 17 00:00:00 2001 From: YusufovYB Date: Sun, 23 Apr 2023 19:06:11 +0300 Subject: [PATCH] =?UTF-8?q?build:=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D1=84=D0=B0=D0=B9=D0=BB=20=D1=84=D1=83=D0=BD?= =?UTF-8?q?=D0=BA=D1=86=D0=B8=D0=B8=20histogram.cpp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- histogram.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 histogram.cpp diff --git a/histogram.cpp b/histogram.cpp new file mode 100644 index 0000000..fb6e26b --- /dev/null +++ b/histogram.cpp @@ -0,0 +1,50 @@ +#include +#include "histogram.h" +void find_minmax(const std:: vector& numbers, double& minimum, double& maximum) { + minimum = numbers[0]; + maximum = numbers[1]; + for (double i : numbers) { + if (i < minimum) + minimum = i; + if (i > maximum) + maximum = i; + } +} +std::vector make_histogram(const std::vector&numbers, size_t bin_count) { + double maximum, minimum; + float LL, LR; + + find_minmax(numbers, minimum, maximum); + double bin_size = (maximum - minimum) / bin_count; + std::vector bins(bin_count); + LL = minimum; + LR = minimum + bin_size; + for (int i = 0; i < bin_count; i++) { + if (i == 0) { + for (int b = 0; b < numbers.size(); b++) { + if ((LL <= numbers[b]) && (numbers[b] < LR)) + bins[i] += 1; + + } + LL = LR; + LR = LL + bin_size; + } + if (i == (bin_count - 1)) { + LR = maximum; + for (int b = 0; b < numbers.size(); b++) { + if ((LL < numbers[b]) && (numbers[b] <= LR)) + bins[i] += 1; + } + break; + } + if ((i != 0) && (i != (bin_count - 1))) { + for (int b = 0; b < numbers.size(); b++) { + if ((LL < numbers[b]) && (numbers[b] < LR)) + bins[i] += 1; + } + LL = LR; + LR = LL + bin_size; + } + } + return bins; + }