Сравнить коммиты

...

2 Коммитов

@ -8,6 +8,7 @@ using namespace std;
struct Input { struct Input {
vector<double> numbers; vector<double> numbers;
size_t bin_count{}; size_t bin_count{};
string stroke;
}; };
Input Input
@ -26,6 +27,9 @@ input_data() {
cerr << "Enter bin count: "; cerr << "Enter bin count: ";
cin >> in.bin_count; cin >> in.bin_count;
cerr << "Enter stroke colour:";
cin >> in.stroke;
return in; return in;
} }
@ -35,6 +39,6 @@ int main()
const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1; const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1;
auto in = input_data(); auto in = input_data();
auto bins = make_histogram(in.numbers, in.bin_count); auto bins = make_histogram(in.numbers, in.bin_count);
show_histogram_svg(bins); show_histogram_svg(bins, in.stroke);
return 0; return 0;
} }

@ -1,8 +1,8 @@
#include <iostream> #include <iostream>
#include <vector> #include <vector>
#include <string> #include <string>
#include "svg.h"
using namespace std; using namespace std;
void void
svg_begin(double width, double height) { svg_begin(double width, double height) {
cout << "<?xml version='1.0' encoding='UTF-8'?>\n"; cout << "<?xml version='1.0' encoding='UTF-8'?>\n";
@ -24,14 +24,14 @@ svg_text(double left, double baseline, string text) {
} }
void void
svg_rect(double x, double y, double width, double height, string stroke, string fill) { svg_rect(double x, double y, double width, double height, string& stroke, string fill) {
cout << "<rect x='" << x << "' y='" << y << "' width='" << width << "' height='" << height << "' stroke='" << stroke << "' fill='" << fill << "' />"; cout << "<rect x='" << x << "' y='" << y << "' width='" << width << "' height='" << height << "' stroke='" << stroke << "' fill='" << fill << "' />";
} }
void void
show_histogram_svg(const vector<double>& bins) { show_histogram_svg(const vector<double>& bins, string stroke) {
const auto IMAGE_WIDTH = 400; const auto IMAGE_WIDTH = 400;
const auto IMAGE_HEIGHT = 300; const auto IMAGE_HEIGHT = 300;
const auto TEXT_LEFT = 20; const auto TEXT_LEFT = 20;
@ -47,13 +47,13 @@ show_histogram_svg(const vector<double>& bins) {
max_count = (bin * BLOCK_WIDTH); max_count = (bin * BLOCK_WIDTH);
} }
} }
svg_begin(400, 300); svg_begin(400, 300);
double top = 0; double top = 0;
for (double bin : bins) { for (double bin : bins) {
const double bin_width = MAX_WIDTH * ((BLOCK_WIDTH * bin) / max_count); const double bin_width = MAX_WIDTH * ((BLOCK_WIDTH * bin) / max_count);
svg_text(TEXT_LEFT, top + TEXT_BASELINE, to_string(bin)); svg_text(TEXT_LEFT, top + TEXT_BASELINE, to_string(bin));
svg_rect(TEXT_WIDTH, top, bin_width, BIN_HEIGHT, "blue", "#aaffaa"); svg_rect(TEXT_WIDTH, top, bin_width, BIN_HEIGHT, stroke, "red");
top += BIN_HEIGHT; top += BIN_HEIGHT;
} }
svg_end(); svg_end();

@ -1,3 +1,4 @@
#pragma once #pragma once
#include <vector> #include <vector>
void show_histogram_svg(const std::vector<double>& bins); #include <string>
void show_histogram_svg(const std::vector<double>& bins, std::string stroke);

Загрузка…
Отмена
Сохранить