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 -svg_end() { +void svg_end() { 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 @@ + + + + +