From c31cf1524fd83e1f911618bd4d6d3722a3dc1b78 Mon Sep 17 00:00:00 2001 From: IshutinaYI <ishutinayi@mpei.ru> Date: Sun, 4 Jun 2023 12:26:16 +0300 Subject: [PATCH] =?UTF-8?q?code:=20=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=20=D1=81=20?= =?UTF-8?q?=D1=83=D1=87=D0=B5=D1=82=D0=BE=D0=BC=20=D1=88=D1=80=D0=B8=D1=84?= =?UTF-8?q?=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fin_lab34.cpp | 7 ++++++- svg.cpp | 14 ++++++++++---- svg.h | 7 +++++-- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/fin_lab34.cpp b/fin_lab34.cpp index aa3620f..b124c60 100644 --- a/fin_lab34.cpp +++ b/fin_lab34.cpp @@ -2,6 +2,7 @@ #include <vector> #include <cmath> #include <string> +#include <fstream> #include "histogram.h" #include "text.h" #include "svg.h" @@ -30,9 +31,13 @@ input_data(){ int main(){ double min = 0, max = 0; + size_t font = 0; Input in = input_data(); auto bins = make_histogram(in.numbers, in.bin_count); //for (auto now: bins) {cout << now << endl;} - show_histogram_svg(bins); + cin >> font; + show_histogram_svg(bins, font); return 0; } + +//� ���������� � marks.txt, � marks.txt � marks.svg diff --git a/svg.cpp b/svg.cpp index cbbb04c..071b9f1 100644 --- a/svg.cpp +++ b/svg.cpp @@ -18,15 +18,19 @@ svg_end() { cout << "</svg>\n"; } void -svg_text(double left, double baseline, string text){ - cout << "<text x='" << left << "' y='" << baseline <<"' >" << text << "</text>" << endl; +svg_text(double left, double baseline, size_t font, string text){ + cout << "<text x='" << left << "' y='" << baseline << "' font-size='" << font << "' >" << text << " </text>" << endl; + return; } void svg_rect(double x, double y, double width, double height, string stroke = "#ed53a8", string fill = "#9df3a1"){ cout << "<rect x='" << x << "' y='" << y << "' width= '" << width << "' height= '" << height << "' stroke= '" << stroke << "' fill= '" << fill << "'/>" << endl; + return; } + void -show_histogram_svg(const vector <size_t> &bins) { +show_histogram_svg(const vector <size_t> &bins, size_t &font) { + const auto IMAGE_WIDTH = 800; const auto IMAGE_HEIGHT = 600; const auto TEXT_LEFT = 20; @@ -38,15 +42,17 @@ show_histogram_svg(const vector <size_t> &bins) { svg_begin(IMAGE_WIDTH, IMAGE_HEIGHT); double top = 0; size_t max_count = 0; + for (auto now: bins) {if (now > max_count) {max_count = now;}} for (size_t bin : bins){ double bin_width = BLOCK_WIDTH * bin; if (bin == max_count) {bin_width = MAX_VALUE * 1.0;} else {bin_width = MAX_VALUE * (static_cast <double> (bin) / max_count);} - svg_text(TEXT_LEFT, top + TEXT_BASELINE, to_string(bin)); + svg_text(TEXT_LEFT, top + TEXT_BASELINE, font, to_string(bin)); svg_rect(TEXT_WIDTH, top, bin_width, BIN_HEIGHT); top += BIN_HEIGHT; } svg_end(); + return; } diff --git a/svg.h b/svg.h index 6421fce..d669680 100644 --- a/svg.h +++ b/svg.h @@ -10,11 +10,14 @@ void svg_end(); void -svg_text(double left, double baseline, string text); +svg_text(double left, double baseline, size_t font, string text); + +size_t +enter_font_size(size_t &font); void svg_rect(double x, double y, double width, double height, string stroke, string fill); void -show_histogram_svg(const vector <size_t> &bins); +show_histogram_svg(const vector <size_t> &bins, size_t &font); #endif // SVG_H_INCLUDED