From 54c9db59e2de56e98d046fc2c727056aafaeb804 Mon Sep 17 00:00:00 2001
From: MakhnovGA <makhnovga@mpei.ru>
Date: Wed, 19 Apr 2023 22:13:10 +0300
Subject: [PATCH] =?UTF-8?q?code:=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?=
 =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BE=D0=B4=D0=B0=20=D0=B4=D0=BE=20?=
 =?UTF-8?q?=D0=BF=D1=83=D0=BD=D0=BA=D1=82=D0=B0=205?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 histogram.cpp | 51 +++++++++++++++++++++++++++++++++++++++++++++
 histogram.h   | 10 +++++++++
 main.cpp      | 57 ++-------------------------------------------------
 text.cpp      | 16 +++++++++++++++
 text.h        |  8 ++++++++
 5 files changed, 87 insertions(+), 55 deletions(-)

diff --git a/histogram.cpp b/histogram.cpp
index e69de29..350f5c1 100644
--- a/histogram.cpp
+++ b/histogram.cpp
@@ -0,0 +1,51 @@
+#include <math.h>
+#include <iostream>
+#include <conio.h>
+#include <vector>
+#include "histogram.h"
+using namespace std;
+
+static
+find_minmax(vector<double> numbers, double &min, double &max) {
+    min = numbers[0];
+    max = numbers[0];
+    for (size_t i = 1; i < numbers.size(); i++) {
+        if (min > numbers[i])
+            min = numbers[i];
+        if (max < numbers[i])
+            max = numbers[i];
+    }
+}
+
+vector <size_t> make_histogramm(vector<double>numbers, size_t bin_count){
+    double min, max;
+    find_minmax(numbers, min, max);
+    double binSize = (max - min) / bin_count;
+    vector<size_t> 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 * binSize;
+            auto hi = min + (j + 1) * binSize;
+            if ((numbers[i] >= lo) && (numbers[i] < hi)) {
+                bins[j]++;
+                found = true;
+            }
+        }
+        if (!found)
+            bins[bin_count - 1]++;
+    }
+    int max_count = bins[0];
+    for (size_t i = 0; i < bin_count; i++) {
+        if (bins[i] > max_count)
+            max_count = bins[i];
+    }
+    if (max_count > 76) {
+        for (size_t i = 0; i < bin_count; i++) {
+            int count = bins[i];
+            size_t height = 76 * (static_cast<double>(count) / max_count);
+            bins[i] = height;
+        }
+    }
+    return bins;
+}
diff --git a/histogram.h b/histogram.h
index e69de29..a857690 100644
--- a/histogram.h
+++ b/histogram.h
@@ -0,0 +1,10 @@
+#ifndef HISTOGRAM_H_INCLUDED
+#define HISTOGRAM_H_INCLUDED
+
+#include <vector>
+
+std::vector<size_t>
+make_histogramm(std::vector<double> numbers, size_t bin_count);
+
+
+#endif // HISTOGRAM_H_INCLUDED
diff --git a/main.cpp b/main.cpp
index 292129f..54e383c 100644
--- a/main.cpp
+++ b/main.cpp
@@ -2,6 +2,8 @@
 #include <iostream>
 #include <conio.h>
 #include <vector>
+#include "histogram.h"
+#include "text.h"
 using namespace std;
 
 struct Input {
@@ -25,61 +27,6 @@ input_data(){
     return in;
 }
 
-void
-find_minmax(vector<double> numbers, double &min, double &max) {
-    min = numbers[0];
-    max = numbers[0];
-    for (size_t i = 1; i < numbers.size(); i++) {
-        if (min > numbers[i])
-            min = numbers[i];
-        if (max < numbers[i])
-            max = numbers[i];
-    }
-    return;
-}
-
-vector <size_t> make_histogramm(vector<double>numbers, size_t bin_count){
-    double min, max;
-    find_minmax(numbers, min, max);
-    double binSize = (max - min) / bin_count;
-    vector<size_t> 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 * binSize;
-            auto hi = min + (j + 1) * binSize;
-            if ((numbers[i] >= lo) && (numbers[i] < hi)) {
-                bins[j]++;
-                found = true;
-            }
-        }
-        if (!found)
-            bins[bin_count - 1]++;
-    }
-    int max_count = bins[0];
-    for (size_t i = 0; i < bin_count; i++) {
-        if (bins[i] > max_count)
-            max_count = bins[i];
-    }
-    if (max_count > 76) {
-        for (size_t i = 0; i < bin_count; i++) {
-            int count = bins[i];
-            size_t height = 76 * (static_cast<double>(count) / max_count);
-            bins[i] = height;
-        }
-    }
-    return bins;
-}
-
-void show_histogramm(vector<size_t>bins){
-    for (size_t i = 0; i < bins.size(); i++) {
-        cout << bins[i] << "|";
-        for (size_t j = 0; j < bins[i]; j++)
-            cout << "*";
-        cout << endl;
-    }
-    return;
-}
 
 int main() {
     Input in = input_data();
diff --git a/text.cpp b/text.cpp
index e69de29..fb02f93 100644
--- a/text.cpp
+++ b/text.cpp
@@ -0,0 +1,16 @@
+#include <math.h>
+#include <iostream>
+#include <conio.h>
+#include <vector>
+#include "text.h"
+
+using namespace std;
+void show_histogramm(vector<size_t>bins){
+    for (size_t i = 0; i < bins.size(); i++) {
+        cout << bins[i] << "|";
+        for (size_t j = 0; j < bins[i]; j++)
+            cout << "*";
+        cout << endl;
+    }
+    return;
+}
diff --git a/text.h b/text.h
index e69de29..91069d3 100644
--- a/text.h
+++ b/text.h
@@ -0,0 +1,8 @@
+#ifndef TEXT_H_INCLUDED
+#define TEXT_H_INCLUDED
+
+#include <vector>
+
+void show_histogramm(std::vector<size_t>bins);
+
+#endif // TEXT_H_INCLUDED