From de998bc7da4718cfc06e57f18a1ee9736e6aa286 Mon Sep 17 00:00:00 2001
From: "Dima (LekomtsevDO)" <LekomtsevDO@mpei.ru>
Date: Sat, 3 May 2025 14:25:08 +0300
Subject: [PATCH] =?UTF-8?q?3.=20=D1=80=D0=B0=D0=B7=D0=B4=D0=B5=D0=BB=D0=B5?=
 =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BD=D0=B0=20=D1=84=D0=B0=D0=B9=D0=BB?=
 =?UTF-8?q?=D1=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 main.cpp | 98 ++------------------------------------------------------
 text.h   |  8 +++++
 2 files changed, 10 insertions(+), 96 deletions(-)
 create mode 100644 text.h

diff --git a/main.cpp b/main.cpp
index dcae1e5..c36fb76 100644
--- a/main.cpp
+++ b/main.cpp
@@ -1,5 +1,7 @@
 #include <vector>
 #include <iostream>
+#include "histogram.h"
+#include "text.h"
 
 using namespace std;
 
@@ -30,102 +32,6 @@ Input input_data()
     return in;
 }
 
-void find_minmax(const vector <double> &numbers, double &min, double &max)
-{
-    min = numbers[0];
-    max = numbers[0];
-    for (double x : numbers)
-    {
-        if (x < min)
-        {
-            min = x;
-        }
-        else if (x > max)
-        {
-            max = x;
-        }
-    }
-}
-vector<size_t> make_histogram(const vector<double> &numbers, size_t bin_count)
-{
-    double min, max;
-    find_minmax(numbers, min, max);
-    double bin_size = (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 * 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;
-}
-
-void show_histogram_text(const vector<size_t>& bins, size_t& bin_count, double bin_size)
-{
-    const size_t SCREEN_WIDTH = 80;
-    const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1;
-    size_t max_bin_count = bins[0];
-    for(size_t i = 0; i < bin_count; i++)
-    {
-        if(bins[i] > max_bin_count)
-        {
-            max_bin_count = bins[i];
-        }
-    }
-
-    for(size_t i = 0; i < bin_count; i++)
-    {
-        if(bins[i]<10)
-        {
-            cout<< "  " << bins[i] << "|";
-        }
-        else
-        {
-            if(bins[i]<100)
-            {
-                cout<< " " << bins[i] << "|";
-            }
-            else
-            {
-                if(bins[i]<1000)
-                {
-                    cout<< bins[i] << "|";
-                }
-
-            }
-        }
-
-        size_t height;
-        if(max_bin_count <= MAX_ASTERISK)
-        {
-            height = bins[i];
-        }
-        else
-        {
-            height = MAX_ASTERISK * (static_cast<double>(bins[i]) / max_bin_count);
-        }
-        for(size_t j = 0; j < height;  j ++)
-        {
-            cout<<"*";
-        }
-        cout<<endl;
-    }
-}
-
 int main()
 {
     Input in = input_data();
diff --git a/text.h b/text.h
new file mode 100644
index 0000000..fb569f0
--- /dev/null
+++ b/text.h
@@ -0,0 +1,8 @@
+#ifndef TEXT_H_INCLUDED
+#define TEXT_H_INCLUDED
+#include <vector>
+#include <iostream>
+
+void show_histogram_text(const std::vector<size_t>& bins, size_t& bin_count, double bin_size);
+
+#endif // TEXT_H_INCLUDED