From d1ea6281bf6e8db83d4912b811b5df50866b335c Mon Sep 17 00:00:00 2001
From: "Dmitriy (BerezhkovDA)" <BerezhkovDA@mpei.ru>
Date: Fri, 10 May 2024 21:57:26 +0300
Subject: [PATCH] =?UTF-8?q?lab4=20=D0=BC=D0=BE=D0=B4=D0=B8=D1=84=D0=B8?=
 =?UTF-8?q?=D0=BA=D0=B0=D1=86=D0=B8=D1=8F=20=D0=BA=D0=BE=D0=B4=D0=B0=20?=
 =?UTF-8?q?=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=B8=20input=5Fdata?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 sem2_lab1/sem2_lab1.cpp | 16 ++++++++--------
 sem2_lab1/svg.cpp       | 13 +++++++------
 2 files changed, 15 insertions(+), 14 deletions(-)

diff --git a/sem2_lab1/sem2_lab1.cpp b/sem2_lab1/sem2_lab1.cpp
index 40f3d2e..444f0f7 100644
--- a/sem2_lab1/sem2_lab1.cpp
+++ b/sem2_lab1/sem2_lab1.cpp
@@ -12,23 +12,23 @@ struct Input {
     vector<double> numbers;
     size_t bin_count{};
 };
-Input input_data()
+Input input_data(istream& in)
 {
-    Input in;
+    Input in_data;
     int number_count;
     cerr << "Enter number count: ";
-    cin >> number_count;
+    in >> number_count;
     cerr << "Enter bin count: ";
-    cin >> in.bin_count;
-    in.numbers.resize(number_count);
+    in >> in_data.bin_count;
+    in_data.numbers.resize(number_count);
     for (size_t i = 0; i < number_count; i++) {
-        cin >> in.numbers[i];
+        in >> in_data.numbers[i];
     }
-    return in;
+    return in_data;
 }
 int main()
 {
-    auto in = input_data();
+    auto in = input_data(cin);
     auto bins = make_histogram(in.numbers, in.bin_count);
     show_histogram_svg(bins,in.numbers.size());
     return 0;
diff --git a/sem2_lab1/svg.cpp b/sem2_lab1/svg.cpp
index 37241d4..71c4641 100644
--- a/sem2_lab1/svg.cpp
+++ b/sem2_lab1/svg.cpp
@@ -36,24 +36,25 @@ void show_histogram_svg(const vector<double>& bins, int number_cnt) {
     const auto TEXT_WIDTH = 50;
     const auto BIN_HEIGHT = 30;
     const auto BLOCK_WIDTH = 10;
-    string colors[] {"#0000ff","#00ff00","#ff0000" ,"#00ffff" ,"#ff00ff" ,"#ffff00","#ffffff","#aaaaaa" };
+    string colors[]{ "#0000ff", "#00ff00", "#ff0000", "#00ffff", "#ff00ff", "#ffff00", "#ffffff", "#aaaaaa" };
     svg_begin(400, 300);
     double top = 0;
-    int color_ptr=0;
+    int color_ptr=7;
     double max = bins[0];
     for (size_t bin : bins) if (bin > max) max = bin;
     cout << max;
-    double k = (IMAGE_WIDTH - TEXT_WIDTH*2) / max;
+    //double k = (IMAGE_WIDTH - TEXT_WIDTH*2) / max;
+    double k = (IMAGE_WIDTH - TEXT_WIDTH) / max;
     for (size_t bin : bins) {
         const double bin_width = k * bin;
         svg_text(TEXT_LEFT, top + TEXT_BASELINE, to_string(bin));
-        svg_text(IMAGE_WIDTH - TEXT_WIDTH + TEXT_LEFT, top + TEXT_BASELINE, to_string(GetProc(number_cnt,bin)) + "%");
+        //svg_text(IMAGE_WIDTH - TEXT_WIDTH + TEXT_LEFT, top + TEXT_BASELINE, to_string(GetProc(number_cnt,bin)) + "%");
         svg_rect(TEXT_WIDTH, top, bin_width, BIN_HEIGHT,"black",colors[color_ptr]);
         top += BIN_HEIGHT;
         color_ptr++;
-        if (color_ptr >= colors->size()) color_ptr = 0;
+        std::cout << endl << "colors->size() = " << colors->size() << endl;
+        if (color_ptr > (colors->size()-1)) color_ptr = 0;
     }
-
     svg_end();
 
 }