From cd334997f1d49ad378d3d91f457dfe8e0f717c7e Mon Sep 17 00:00:00 2001
From: KlimecnhenkoIA <KlimecnhenkoIA.mpei.ru>
Date: Mon, 26 May 2025 03:18:42 +0300
Subject: [PATCH] =?UTF-8?q?Main=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=20=D0=B4?=
 =?UTF-8?q?=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=84?=
 =?UTF-8?q?=D0=B0=D0=B9=D0=BB=D0=BE=D0=B2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 main.cpp | 114 ++++++-------------------------------------------------
 1 file changed, 12 insertions(+), 102 deletions(-)

diff --git a/main.cpp b/main.cpp
index c93c28a..4ffe988 100644
--- a/main.cpp
+++ b/main.cpp
@@ -1,21 +1,23 @@
+#include <iostream>
+#include <vector>
+#include "histogram.h"
+#include "text.h"
 using namespace std;
 
-
 struct Input {
     vector<double> numbers;
-    size_t bin_count{};
+    size_t bin_count;
 };
 
-Input input_data(){
-    size_t number_count, bin_count;
+Input input_data() {
+    Input in;
+    size_t number_count;
     cerr << "Enter number count: ";
     cin >> number_count;
-    Input in;
-    in.numbers.resize(number_count);
 
-    for (size_t i = 0; i < number_count; i++)
-    {
-        cerr << "Enter Num[" << i << "]: ";
+    in.numbers.resize(number_count);
+    cerr << "Enter numbers: ";
+    for (size_t i = 0; i < number_count; i++) {
         cin >> in.numbers[i];
     }
 
@@ -24,100 +26,8 @@ Input input_data(){
     return in;
 }
 
-void find_minmax(const vector<double> &numbers, double &min, double &max)
-{
-    max = numbers[0];
-    min = numbers[1];
-    for (double x: numbers)
-    {
-        if (x < min)
-        {
-            min = x;
-        }
-        else if (x > max)
-        {
-            max = x;
-        }
-    }
-    return;
-}
-
-vector<size_t> make_histogram (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(vector<size_t> bins, size_t bin_count)
-{
-    const size_t SCREEN_WIDTH = 80;
-    const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1;
-
-    double max_bin;
-    size_t height;
-    max_bin = bins[0];
-    height = bins[0];
-    for (size_t i = 0; i < bin_count; i++)
-    {
-
-        if (bins[i] > max_bin){
-            max_bin = bins[i];
-        }
-    }
-
-    bool flag = false;
-    if ( max_bin > 80)
-    {
-        flag = true;
-    }
-    for (size_t i = 0; i < bin_count; i++)
-    {
-        if (bins[i] < 100)
-            cout << " ";
-        if (bins[i] < 10)
-            cout << " ";
-        cout << bins[i] << "|";
-        if( flag == true)
-        {
-            height = MAX_ASTERISK * (static_cast<double>(bins[i]) / max_bin);
-        }
-        else
-        {
-            height = bins[i];
-        }
-        for (size_t j = 0; j < height; j++)
-        {
-            cout << "*";
-        }
-        cout << endl;
-    }
-}
-
-int main()
-{
+int main() {
     auto in = input_data();
     auto bins = make_histogram(in.numbers, in.bin_count);
     show_histogram_text(bins, in.bin_count);
-    return 0;
 }