From 94f225210f506d0e5605abb7378e2257b72c5d37 Mon Sep 17 00:00:00 2001
From: "Lubov (IlintsevaLv)" <IlintsevaLv@mpei.ru>
Date: Sun, 23 Apr 2023 23:04:41 +0300
Subject: [PATCH] =?UTF-8?q?code:=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=20=D0=B3?=
 =?UTF-8?q?=D0=B8=D1=81=D1=82=D0=BE=D0=B3=D1=80=D0=B0=D0=BC=D0=BC=D1=8B=20?=
 =?UTF-8?q?=D0=B2=20marks.svg?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 labory1.cbp |  7 +++++
 main.cpp    | 82 +++--------------------------------------------------
 2 files changed, 11 insertions(+), 78 deletions(-)

diff --git a/labory1.cbp b/labory1.cbp
index b3f4f43..4b7f8c2 100644
--- a/labory1.cbp
+++ b/labory1.cbp
@@ -35,7 +35,14 @@
 		<Unit filename=".gitignore">
 			<Option target="&lt;{~None~}&gt;" />
 		</Unit>
+		<Unit filename="histogram-internal.h" />
+		<Unit filename="histogram.cpp" />
+		<Unit filename="histogram.h" />
 		<Unit filename="main.cpp" />
+		<Unit filename="svg.cpp" />
+		<Unit filename="svg.h" />
+		<Unit filename="text.cpp" />
+		<Unit filename="text.h" />
 		<Extensions>
 			<lib_finder disable_auto="1" />
 		</Extensions>
diff --git a/main.cpp b/main.cpp
index 6736725..27533d4 100644
--- a/main.cpp
+++ b/main.cpp
@@ -1,6 +1,9 @@
 #include <iostream>
 #include <cmath>
 #include <vector>
+#include "histogram.h"
+#include "text.h"
+#include "svg.h"
 using namespace std;
 
 struct Input{
@@ -29,87 +32,10 @@ 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] > max)
-            max = numbers[i];
-        if (numbers[i] < min)
-            min = numbers[i];
-    }
-}
-
-vector <size_t> make_histogram (const vector<double>& numbers,size_t &bin_count)
-{
-    vector <size_t> bins(bin_count);
-    double low, hi;
-    double min, max;
-    find_minmax(numbers, min, max);
-
-    double bin_size = (max - min) / bin_count;
-    low = min;
-    hi = low + bin_size;
-    for (size_t i = 0; i < numbers.size(); i++)
-    {
-        bool found = false;
-        for (size_t j = 0; (j < bin_count - 1) && !found; j++)
-        {
-            low = min + j * bin_size;
-            hi = min + (j + 1) * bin_size;
-            if ((low <= numbers[i]) && (numbers[i] < hi))
-            {
-                bins[j]++;
-                found = true;
-            }
-        }
-        if (found == false)
-        {
-            bins[bin_count - 1]++;
-        }
-
-    }
-    return bins;
-}
-void show_histogram_text(const vector<size_t>& bins,size_t &bin_count)
-{
-    const size_t SCREEN_WIDTH = 80;
-    const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1;
-
-    size_t max_bin = bins[0];
-    for (size_t bin : bins)
-        if (bin > max_bin)
-            max_bin = bin;
-    for (size_t bin : bins)
-    {
-        int height = bin;
-        if (max_bin > MAX_ASTERISK)
-        {
-            height = MAX_ASTERISK * (static_cast<double>(bin) / max_bin);
-        }
-        if (bin < 100)
-            cout << " ";
-        if (bin < 10)
-            cout << " ";
-        cout << bin << "|";
-
-        for (size_t i = 0; i < height; i++)
-            cout << "*";
-        cout << endl;
-    }
-}
-
-
 int main()
 {
     Input in = input_data();
-    //double bin_count{};
     auto bins=make_histogram(in.numbers,in.bin_count);
-    //for (int i=0; i<in.bin_count; i++)
-        //cout << bins[i];
-    show_histogram_text(bins,in.bin_count);
+    show_histogram_svg(bins); //,in.bin_count);
     return 0;
 }