diff --git a/lab1.depend b/lab1.depend index 9a01243..fdb4d65 100644 --- a/lab1.depend +++ b/lab1.depend @@ -3,7 +3,7 @@ <iostream> <vector> -1682281166 source:c:\users\admin\onedrive\������� ����\lab1\main.cpp +1682338069 source:c:\users\admin\onedrive\������� ����\lab1\main.cpp <iostream> <vector> <cmath> @@ -37,7 +37,7 @@ 1682273796 c:\users\admin\onedrive\������� ����\lab1\histogam_internal.h <vector> -1682280585 source:c:\users\admin\onedrive\������� ����\lab1\svg.cpp +1682339808 source:c:\users\admin\onedrive\������� ����\lab1\svg.cpp <math.h> <iostream> <conio.h> diff --git a/lab1.layout b/lab1.layout index fdcb6d6..5c910e8 100644 --- a/lab1.layout +++ b/lab1.layout @@ -4,7 +4,7 @@ <ActiveTarget name="Debug" /> <File name="main.cpp" open="1" top="1" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <Cursor> - <Cursor1 position="296" topLine="0" /> + <Cursor1 position="712" topLine="0" /> </Cursor> </File> </CodeBlocks_layout_file> diff --git a/main.cpp b/main.cpp index cbc6fa6..d399bf6 100644 --- a/main.cpp +++ b/main.cpp @@ -26,7 +26,7 @@ input_data() { cin >> in.numbers[i]; } - cout << "Enter number of bins"; + cerr<< "Enter number of bins"; cin >> in.bin_count; return in; } diff --git a/svg.cpp b/svg.cpp index f32c103..f81e0c2 100644 --- a/svg.cpp +++ b/svg.cpp @@ -26,12 +26,31 @@ svg_text(double left, double baseline, string text) { cout << "<text x='" << left << "' y='" << baseline << "'>" << text << "</text>"; } - - +void svg_rect(double x, double y, double width, double height, string colour = "black", string fill = "black"){ + cout << "<rect x='"<<x<<"' y='"<<y<<"' width='"<<width<<"' height='"<<height<<"' stroke = '"<<colour <<"' fill = '"<<fill<<"' />"; +} void show_histogram_svg(const vector<size_t>& bins) { + 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; + double top = 0; + double max_count = bins[0]; + for (size_t i = 0; i < bins.size(); i++) { + if (bins[i] > max_count) + max_count = bins[i]; + } svg_begin(400, 300); - svg_text(20, 20, to_string(bins[0])); + for (size_t bin : bins) { + const double bin_width = (IMAGE_WIDTH - TEXT_WIDTH)*(bin/max_count); + svg_text(TEXT_LEFT, top + TEXT_BASELINE, to_string(bin)); + svg_rect(TEXT_WIDTH, top, bin_width, BIN_HEIGHT, "blue", "#FF00FF"); + top += BIN_HEIGHT; + } svg_end(); } diff --git a/unittest.layout b/unittest.layout new file mode 100644 index 0000000..593c06e --- /dev/null +++ b/unittest.layout @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<CodeBlocks_layout_file> + <FileVersion major="1" minor="0" /> + <ActiveTarget name="Debug" /> +</CodeBlocks_layout_file>