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 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& 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(); }