From 7ba713ba5a91136d296323b5d4f6b805e82459b3 Mon Sep 17 00:00:00 2001
From: KapitonovMikA <KapitonovMikA@mpei.ru>
Date: Mon, 20 May 2024 03:32:31 +0300
Subject: [PATCH] =?UTF-8?q?code:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?=
 =?UTF-8?q?=D0=BB=D0=B8=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=20=D0=B2=20=D1=84?=
 =?UTF-8?q?=D0=BE=D1=80=D0=BC=D0=B0=D1=82=D0=B5=20svg?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 main.cpp | 110 +++----------------------------------------------------
 1 file changed, 5 insertions(+), 105 deletions(-)

diff --git a/main.cpp b/main.cpp
index f12dd1b..edc3077 100644
--- a/main.cpp
+++ b/main.cpp
@@ -2,9 +2,11 @@
 #include <conio.h>
 #include <vector>
 #include <stdlib.h>
+#include "histogram.h"
+#include "text.h"
+#include "svg01.h"
 using namespace std;
 
-const size_t MAX_ELEMENT = 76;
 struct Input {
     vector<double> numbers;
     size_t bin_count{};
@@ -31,113 +33,11 @@ input_data(){
     return in;
 }
 
-void
-find_minmax(const vector<double>& numbers, double& min, double& max){
-    min = numbers[0];
-    max = numbers[0];
-    for(size_t i=0; i < numbers.size(); i++){
-        if (numbers[i] < min)
-        {
-            min = numbers[i];
-        }
-        else if (numbers[i] > max)
-        {
-            max = numbers[i];
-        }
-    }
-}
-
-vector<size_t>
-make_histogram(const vector<double>& numbers, size_t bin_count){
-
-    double min, max;
-    find_minmax(numbers, min, max);
-
-    vector<size_t> bins(bin_count);
-
-    double bin_size = (max - min) / 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 lower_Bound = min + j * bin_size;
-            auto upper_Bound = min + (j + 1) * bin_size;
-            if ((lower_Bound <= numbers[i]) && (numbers[i] < upper_Bound))
-            {
-                bins[j]++;
-                found = true;
-            }
-        }
-        if (!found)
-        {
-            bins[bin_count - 1]++;
-        }
-    }
-
-    double max_count = bins[0];
-    for (size_t j=0; j < bin_count; j++){
-        if (bins[j] > max_count) {
-            max_count = bins[j];
-        }
-    }
-    return bins;
-}
-
-void
-show_histogram_text(const vector<size_t> bins, size_t bin_count){
-    double max_count = bins[0];
-    for (size_t j=0; j < bin_count; j++){
-        if (bins[j] > max_count) {
-            max_count = bins[j];
-        }
-    }
-    vector<size_t> height(bin_count);
-    for (size_t j=0; j < bin_count; j++){
-        height[j] = MAX_ELEMENT * (bins[j]/max_count);
-    }
-
-    if (max_count > MAX_ELEMENT){
-        for  (size_t j=0; j < bin_count; j++)
-            {
-                if (bins[j] < 100) {
-                    cout << " ";
-                    if (bins[j] < 10){
-                            cout << " ";
-                    }
-                }
-                cout << bins[j] << "|";
-
-                for (size_t i=0; i < height[j]; i++){
-                        cout << "*";
-                        }
-                cout << endl;
-            }
-    }
-    else {
-        for  (size_t j=0; j < bin_count; j++)
-            {
-                if (bins[j] < 100) {
-                    cout << " ";
-                    if (bins[j] < 10){
-                            cout << " ";
-                    }
-                }
-                cout << bins[j] << "|";
-
-                for (size_t i=0; i < bins[j];i++){
-                        cout << "*";
-                        }
-                cout << endl;
-            }
-    }
-}
-
 int main()
 {
 
     auto in = input_data();
-    auto bins = make_histogram(in.numbers, in.bin_count);
-    show_histogram_text(bins, in.bin_count);
+    std::vector<size_t> bins = make_histogram(in.numbers, in.bin_count);
+    show_histogram_svg(bins);
     return 0;
 }