diff --git a/cs-lab34.cbp b/cs-lab34.cbp
index 00fdc54..d794df6 100644
--- a/cs-lab34.cbp
+++ b/cs-lab34.cbp
@@ -36,7 +36,18 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/svg.cpp b/svg.cpp
index f0b699d..1b344d8 100644
--- a/svg.cpp
+++ b/svg.cpp
@@ -4,27 +4,31 @@
#include "svg.h"
using namespace std;
-const auto IMAGE_WIDTH = 400;
const auto IMAGE_HEIGHT = 300;
const auto TEXT_LEFT = 20;
const auto TEXT_BASELINE = 20;
const auto TEXT_WIDTH = 50;
const auto BIN_HEIGHT = 30;
const auto BLOCK_WIDTH = 10;
-const auto MAX_WIDTH = IMAGE_WIDTH - TEXT_WIDTH;
-void
-svg_text(double left, double baseline, string text) {
- cout << "" << text << "";
-}
-
-void
-svg_rect(double x, double y, double width, double height, string stroke = "black", string fill = "aaaaaa") {
- cout << "\n";
+double ask_width(size_t numbers_count) {
+ while (true) {
+ double width;
+ cout << "Enter width ";
+ cin >> width;
+ if (width < 70) {
+ cout << "Try again. It's too low.\n";
+ } else if (width > 800) {
+ cout << "Try again. It's too high.\n";
+ } else if (width < numbers_count * BLOCK_WIDTH / 3) {
+ cout << "Try again.\n";
+ } else {
+ return width;
+ }
+ }
}
-void
-svg_begin(double width, double height) {
+void svg_begin(double width, double height) {
cout << "\n";
cout << "\n";
}
-void
-show_histogram_svg(const vector& bins) {
+void svg_text(double left, double baseline, string text) {
+ cout << "" << text << "\n";
+}
+
+void svg_rect(double x, double y, double width, double height, string stroke = "black", string fill = "aaaaaa") {
+ cout << "\n";
+}
+
+void show_histogram_svg(const vector& bins) {
+ const auto IMAGE_WIDTH = ask_width(bins.size());
const auto MAX_WIDTH = IMAGE_WIDTH - TEXT_WIDTH;
size_t max_count = 0;
- for (size_t x : bins) {
- if (x > max_count) {
- max_count = x;
+ for (size_t count : bins) {
+ if (count > max_count) {
+ max_count = count;
}
}
if (max_count == 0) {
@@ -54,7 +65,8 @@ show_histogram_svg(const vector& bins) {
if (scale_factor > 1) {
scale_factor = 1;
}
- svg_begin(400, 300);
+
+ svg_begin(IMAGE_WIDTH, IMAGE_HEIGHT);
double top = 0;
for (size_t bin : bins) {
double bin_width = BLOCK_WIDTH * bin * scale_factor;
@@ -64,4 +76,3 @@ show_histogram_svg(const vector& bins) {
}
svg_end();
}
-
diff --git a/unittest.cbp b/unittest.cbp
index 7f9621b..bffa065 100644
--- a/unittest.cbp
+++ b/unittest.cbp
@@ -31,6 +31,12 @@
+
+
+
+
+
+