diff --git a/lab01/main.cpp b/lab01/main.cpp index 7c9247e..4bbab47 100644 --- a/lab01/main.cpp +++ b/lab01/main.cpp @@ -36,6 +36,7 @@ int main() { const size_t SCREEN_WIDTH = 80; const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1; + bool prompt = true; auto in = input_data(cin, prompt); auto bins = make_histogram(in.numbers, in.bin_count); diff --git a/lab01/svg.cpp b/lab01/svg.cpp index e9695df..434873e 100644 --- a/lab01/svg.cpp +++ b/lab01/svg.cpp @@ -41,12 +41,19 @@ show_histogram_svg(const vector& bins) { const auto BLOCK_WIDTH = 10; double average = 0, sum =0, scale=1; const auto MAX_WIDTH = (IMAGE_WIDTH - TEXT_WIDTH); + double sum = 0; double max_count = (bins[0] * BLOCK_WIDTH); for (double bin: bins){ if ((bin * BLOCK_WIDTH) > max_count) { max_count = (bin * BLOCK_WIDTH); } } + for (double bin: bins){ + sum = sum + (MAX_WIDTH * ((BLOCK_WIDTH * bin) / max_count)); + } + + double avg_width = sum/bins.size(); + svg_begin(400, 300); double top = 0; @@ -56,7 +63,12 @@ show_histogram_svg(const vector& bins) { average = sum / bins.size(); for (double bin : bins) { const double bin_width = MAX_WIDTH * ((BLOCK_WIDTH * bin) / max_count); - svg_text(TEXT_LEFT, top + TEXT_BASELINE, to_string(bin)); + if (bin_width > avg_width){ + svg_rect(TEXT_WIDTH, top, bin_width, BIN_HEIGHT, "black", "#e71320"); + } + else { + svg_rect(TEXT_WIDTH, top, bin_width, BIN_HEIGHT, "black", "#2fe713"); + } if (bin > average) { svg_rect(TEXT_WIDTH, top, bin_width / scale, BIN_HEIGHT, "yellow", "red"); }